ClassNotFoundException : Com.Sun.Jersey.Spi.Container.Servlet.ServletContainer解决

用Jersey开发REST服务,项目报一错误:ClassNotFoundException : Com.Sun.Jersey.Spi.Container.Servlet.ServletContainer

详情如下:

org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /ecloud threw load() exception
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)


原因:项目缺少jersey-bundle.jar包所致。

解决方法:将jersey-bundle-1.13.jar加入到项目类路径下。(说明,Jersey的各个包应使用同一个版本)


### 解决 Java 项目中的 `ClassNotFoundException` 异常 当遇到 `java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer` 错误时,通常意味着项目的依赖项配置不正确或缺少必要的库文件。以下是详细的解决方案: #### 1. 检查 Maven 或 Gradle 配置 确保在项目的构建工具配置文件中已包含 JerseyServlet 容器依赖。 对于 **Maven** 用户,在 `pom.xml` 文件中添加如下依赖: ```xml <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet-core</artifactId> <version>${jersey.version}</version> </dependency> ``` 对于 **Gradle** 用户,则应在 `build.gradle` 中加入相应的声明: ```groovy implementation 'org.glassfish.jersey.containers:jersey-container-servlet-core:${jerseyVersion}' ``` 上述操作可以有效引入所需的类到classpath下[^1]。 #### 2. 更新 IDE 设置并重新导入项目 完成依赖更新后,建议刷新IntelliJ IDEA的索引,并通过菜单选项【File】-> 【Invalidate Caches / Restart...】来清理缓存重启IDEA环境。这一步骤有助于消除因本地缓存引起的各种潜在问题[^2]。 #### 3. 修改 Web 应用程序部署描述符 (web.xml) 如果应用程序仍然抛出相同的异常,可能是因为 web.xml 文件内的监听器定义有误或是路径不对。确认 `<servlet-class>` 标签内指定了正确的全限定名——即 `org.glassfish.jersey.servlet.ServletContainer` 而不是其他名称[^3]。 ```xml <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <!-- 其他配置 --> </servlet> ``` #### 4. 确认 Tomcat 版本兼容性 有时特定版本的Tomcat服务器可能会与某些框架组件存在兼容性问题。查阅官方文档了解所使用的Jersey版本是否支持当前运行的应用服务器版本[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值