gpt4 book ai didi

java - Jersey - ClassNotFoundException org.glassfish.jersey.servlet.ServletContainer

转载 作者:行者123 更新时间:2023-11-28 23:17:24 24 4
gpt4 key购买 nike

当我使用 jersey 将我的 rest api 部署到 tomcat 7.0 服务器时,我收到一个错误,该错误已在 stackoverflow 上经常讨论,但我无法解决它:

java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:495)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:477)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1133)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5362)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1700)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1690)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我检查过的东西:

避免重复 Jersey 版本

<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
</dependency>

所以,ServletContainer绝对是进口的

ServletContainer.class in Maven dependencies

但是我注意到在依赖层次结构中,jersey servlet 容器也是通过另一个库 ( dropwizard-core -> dropwizard-jersey -> jersey-container-servlet: 2.16 ) 导入的,并且版本不同(我的版本是 2.25.1 )。但它说 omitted for conflict with 2.25.1

jersey servlet container of different version also imported by different lib

Apache Tomcat v7.0 包库在哪里

我的项目原本是一个纯Maven项目,我添加了Dynamic Web Project侧面稍后。当我与成功测试 jersey rest api 的测试项目进行比较时,我没有看到 Apache Tomcat v7.0我的构建路径上的库。在我的测试项目中,我看到了

build path of successful rest api project

对比

build path of actual project

WebContent/WEB-INF/lib 为空

this question 中所述 Jersey 库应该部署到我的 WEB-INF/lib/文件夹。我做了Project -> Deployment Assembly -> Add -> Java Build Path Entries -> Maven Dependencies -> Finish .但是一旦我这样做Project -> Maven -> Update上面的步骤已重置(即我在 Maven Dependencies 中看不到 Web Deployment Assembly。尽管这很奇怪,但在成功的测试 Jersey 项目中,lib 文件夹也是空的。

编辑

有一些更根本的问题出了问题。在成功的jersey rest api中,我得到了子文件夹结构

  • 目标
    +---- 生成源
    +---- JerseyRestDemo-0.0.1-SNAPSHOT
    +---- m2e-wtp
    +------------ 网络资源
    +---------------- 元信息
    +------------------------maven
    +---- maven-archiver
    +---------- pom.properties
    +---- 测试类
  • 网络内容
    +---- 元信息
    +-------- list .MF
    +---- WEB-INF
    +-------- 库
    +------------web.xml

但是,在我目前的项目中,我只是看到

  • 目标
    +----- 生成源
    +------------ 注释
    +----- maven 状态
    +------------ maven-compiler-plugin
    +----------------编译
  • 网络内容
    +---- 元信息
    +-------- list .MF
    +---- WEB-INF
    +-------- 库
    +------------web.xml

谢谢你的帮助

最佳答案

我在 this post 之后再次将项目从 maven 转换为 webapp然后就成功了

关于java - Jersey - ClassNotFoundException org.glassfish.jersey.servlet.ServletContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47650130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com