泽西 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
Posted
技术标签:
【中文标题】泽西 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer【英文标题】:Jersey java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 【发布时间】:2013-07-21 11:10:21 【问题描述】:我正在尝试使用 jersey 库与 Tomcat 和 Eclipse 一起创建 Web 服务。 这是我的服务类:
package com.gontuseries.university;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/university")
public class UniversityRestWs
@GET
@Produces(MediaType.TEXT_html)
public String getHtmlUniversityInfo()
return "<html><body>test</body></html>";
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getTextUniversityInfo()
return "test";
这是文件 web.xml
<servlet>
<servlet-name>Jersey REST Service</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.gontuseries.university</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
当我测试我的服务时,我得到 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 我从https://jersey.java.net/download.html下载了球衣
有人可以帮助我吗? 谢谢
【问题讨论】:
把jersey-server.jar
放在类路径中。
我做到了。但它仍然不起作用。我还尝试了另一个具有不同库的项目。我将它们添加到 WEB-INF/lib 文件夹中,并在 Java Build Path-> 库 -> Web 应用程序库中使用 eclipse 设置了类路径。看来我无法在我的项目中添加外部库。
【参考方案1】:
对我来说,问题是服务器的 lib 文件夹中没有 jar。 确保它可以访问所有依赖项: 项目 -> 属性 -> 开发程序集 -> 添加 -> java 构建路径条目。
【讨论】:
【参考方案2】:我们需要使用提供 Eclipse 的构建路径。那必须解决问题。
确保它可以访问所有依赖项: 项目->属性->开发程序集->添加->java构建路径条目-->maven依赖
jersey 捆绑包依赖
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17</version>
<dependency>
如果您使用的是 maven,最好的几个简单步骤将适用于您的应用程序
【讨论】:
我确实忘记了,谢谢:项目-> 属性-> 部署程序集-> 添加-> java 构建路径条目-> maven 依赖项(WEB-INF/lib)【参考方案3】:伙计,我也遇到了同样的问题。我解决了将 jersey-servlet-1.18.jar 添加到 WEB-INF/lib 的问题。 然后,这个文件夹是这样的:
请记住,将所有这些 jar 添加到您的构建路径中
【讨论】:
添加 jersey-servlet.jar 后,我得到一个 javax/servlet/ServletContainerInitializer noclassdeffounderror.. 然后我添加了所有 jar(如上所述),我得到了同样的期望【参考方案4】:您使用的是 Jersey 2.x 吗?如果是这样,ServletContainer
类已移至另一个包。本文提供了一些关于如何在从 Jersey 1.7 迁移到 2.x 时更改 web.xml 的有用信息:
https://java.net/projects/jersey/lists/users/archive/2013-06/message/91.
【讨论】:
【参考方案5】:com.sun.jersey.spi.container.servlet.ServletContainer
类包含在“jersey-servlet.jar”中,因此您应该将其与“jersey-server.jar”一起放入 WEB-INF/lib。
【讨论】:
添加 jersey-servlet.jar 后,我得到了原因:java.lang.NoClassDefFoundError: javax/servlet/ServletContainerInitializer。我正在使用 Jersey 1.15【参考方案6】:我得到了同样的错误——“java.lang.ClassNotFoundException : com.sun.jersey.spi.container.servlet.ServletContainer”,同时尝试在 Eclipse 中的 tomcat 中执行 restful jersey web 服务。
以下步骤帮助我解决了问题:
更正maven依赖到正确版本的依赖jar
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
右键eclipse项目->Maven->更新项目
确保在 Eclipse 属性开发程序集中配置正确。右键项目-属性->开发程序集->添加->java构建路径条目->maven依赖
【讨论】:
【参考方案7】:如果您使用的是 JERSEY-jaxrs-ri-2.9 版本的 zip,请在 WEB.XML 文件中使用下面给出的内容。
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
......
</init-param>
【讨论】:
【参考方案8】:我在以前运行良好的 Eclipse 项目中遇到此错误,该项目在 Tomcat 7.0 上运行。最终我通过从 Tomcat 中删除项目并重新添加它来解决它。
【讨论】:
【参考方案9】:上面提供的解决方案是正确的,但即使在进行了这些更改之后,我仍然收到此错误。所以我所做的是删除所有 maven 下载的 Jersey jar,并使用新的 maven 依赖项再次更新 Project,这解决了我的问题
【讨论】:
【参考方案10】:由于构建路径问题和过时的依赖项名称,我们收到此错误。最新的从 org.glassfish 而不是 com.sun 开始。替换为 2.0 的最新依赖项后,您应该添加“服务器构建路径中的“运行时”库。
“java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer”
请按照以下步骤解决找不到类的异常。
右键项目 --> 构建路径 --> 构建路径 --> 添加库 --> 服务器运行时 --> Apache Tomcat v7.0
谢谢, 萨钦G N
【讨论】:
以上是关于泽西 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer的主要内容,如果未能解决你的问题,请参考以下文章