当我尝试使用Jersey在Eclipse中构建一个简单的测试应用程序时。当我尝试运行我的应用程序时,我得到了这个例外:
java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer
我已经在Stack Overflow上研究了这个问题的答案,并验证了这些:
确实,jersey-server中不存在缺少的类。该类现在存在于jersey-servlet中(注意“servlet”,而不是“服务器”)。所以我的maven依赖现在看起来像这样:
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
我的web.xml看起来像这样
<servlet>
<servlet-name>jersey-helloworld-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.javacodegeeks.enterprise.rest.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-helloworld-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
我现在可以在Eclipse中查看我的项目,在Java Resources / Libraries / Maven Dependencies下我可以看到文件jersey-servlet-1.19.jar,在那个jar中我可以看到com.sun.jersey.spi.container .servlet包,在那个包中我可以看到ServletContainer.class文件。
所以一切看起来都是正确的,但是当服务器(apache 7.0)启动时,它无法找到明显存在的类。
感谢您提出任何建议。
答案 0 :(得分:0)
这是一个日食设置问题,而不是泽西岛问题。
从这个帖子ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
右键单击您的eclipse项目Properties - &gt;部署组件 - &gt;添加 - &gt; Java构建路径条目 - &gt; Maven依赖关系 - &gt;完。
因此Eclipse在启动Apache时没有使用maven依赖项。
答案 1 :(得分:0)
我通过如下更改依存关系来解决它。
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
这与maven库具有的结构相同。