我的Jersey 2.13
带有Tomcat 7
的网络服务。但是当我尝试在服务器上运行时,我有这个错误:
org.apache.catalina.core.ApplicationContext log
GRAVE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: javax/inject/Singleton
at org.glassfish.jersey.model.ContractProvider$Builder.<clinit>(ContractProvider.java:89)
at org.glassfish.jersey.model.ContractProvider.builder(ContractProvider.java:71)
at org.glassfish.jersey.model.internal.ComponentBag.modelFor(ComponentBag.java:476)
at org.glassfish.jersey.model.internal.ComponentBag.access$100(ComponentBag.java:89)
at org.glassfish.jersey.model.internal.ComponentBag$5.call(ComponentBag.java:408)
at org.glassfish.jersey.model.internal.ComponentBag$5.call(ComponentBag.java:398)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.model.internal.ComponentBag.registerModel(ComponentBag.java:398)
at org.glassfish.jersey.model.internal.ComponentBag.register(ComponentBag.java:309)
at org.glassfish.jersey.model.internal.CommonConfig.register(CommonConfig.java:463)
at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:448)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:309)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5229)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5516)
我忘了什么?
答案 0 :(得分:1)
我不认为Tomcat 7包含CDI&#34;开箱即用&#34;,所以如果你想使用它,你需要在你的WAR文件中捆绑一个CDI实现。 JBoss Weld是CDI的参考实现,你使用它可能是最简单的。如果您正在使用Maven,请在dependencies
部分中添加以下内容:
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>1.1.10.Final</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
有关详细信息,请参阅this article。