简体   繁体   English

球衣-ClassNotFoundException org.glassfish.jersey.servlet.ServletContainer

[英]jersey - ClassNotFoundException org.glassfish.jersey.servlet.ServletContainer

When I deploy my rest api with jersey to a tomcat 7.0 server I get an error that has been discussed on stackoverflow quite often but I haven't been able to resolve it: 当我将带有领骑衫的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)

Things I have checked: 我检查过的事情:

Avoiding duplicate jersey versions 避免重复球衣版本

<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>

So, ServletContainer is definitely imported 因此, ServletContainer绝对是导入的

Maven依赖项中的ServletContainer.class

I notice however in the dependency hierarchy that the jersey servlet container is also imported through another library ( dropwizard-core -> dropwizard-jersey -> jersey-container-servlet: 2.16 ) and the versions differ (my version is 2.25.1 ). 但是,我在依赖关系层次结构中注意到,该jersey servlet容器也通过另一个库( dropwizard-core -> dropwizard-jersey -> jersey-container-servlet: 2.162.25.1 ,并且版本有所不同(我的版本是2.25.1 )。 But it says omitted for conflict with 2.25.1 但是它说omitted for conflict with 2.25.1

不同库也导入了不同版本的jersey servlet容器

Where is Apache Tomcat v7.0 package library Apache Tomcat v7.0软件包库在哪里

My project was originally a pure Maven project and I added the Dynamic Web Project facet lateron. 我的项目最初是一个纯Maven项目,后来又添加了Dynamic Web Project构面。 When I compare to a test project where I successfully tested a jersey rest api, I don't see the Apache Tomcat v7.0 libraries on my build path. 当我与一个成功测试了jersey rest api的测试项目进行比较时,在构建路径上看不到Apache Tomcat v7.0库。 In my test project I see 在我的测试项目中,我看到了

成功的Rest API项目的构建路径

versus

实际项目的构建路径

WebContent/WEB-INF/lib is empty WebContent / WEB-INF / lib为空

As mentioned in this question the jersey libraries should be deployed to my WEB-INF/lib/ folder. 本问题所述,球衣库应部署到我的WEB-INF/lib/文件夹中。 I did Project -> Deployment Assembly -> Add -> Java Build Path Entries -> Maven Dependencies -> Finish . 我做了Project -> Deployment Assembly -> Add -> Java Build Path Entries -> Maven Dependencies -> Finish But as soon as I do Project -> Maven -> Update the step above is reset (ie I don't see Maven Dependencies in the Web Deployment Assembly anymore. Despite this is strange, in the successful test jersey project the lib folder is also empty. 但是,一旦我执行Project -> Maven -> Update ,就会重置上面的步骤(即,我不再在Web Deployment Assembly看到Maven Dependencies 。尽管这很奇怪,但是在成功的jersey项目中, lib文件夹也位于空的。

EDIT 编辑

There is something more fundamental going wrong. 还有一些更根本的错误。 In the successful jersey rest api, I got the subfolder structure 在成功的jersey rest API中,我得到了子文件夹结构

  • target 目标
    +---- generated-sources + ----生成源
    +---- JerseyRestDemo-0.0.1-SNAPSHOT + ---- JerseyRestDemo-0.0.1-SNAPSHOT
    +---- m2e-wtp + ---- m2e-wtp
    +---------- web-resources + ----------网络资源
    +----------------- META-INF + ----------------- META-INF
    +-----------------------maven + -----------------------行家
    +---- maven-archiver + ---- Maven档案库
    +--------- pom.properties + --------- pom.properties
    +---- test-classes + ----测试班
  • WebContent 网页内容
    +---- META-INF + ---- META-INF
    +--------- MANIFEST.MF + --------- MANIFEST.MF
    +---- WEB-INF + ---- WEB-INF
    +--------- lib + --------- lib
    +----------web.xml + ---------- web.xml

However, in my current project I just see 但是,在我当前的项目中,我只是看到

  • target 目标
    +----- generated-sources + -----生成源
    +---------- annotations + ----------注释
    +----- maven-status + -----专家状态
    +---------- maven-compiler-plugin + ---------- Maven编译器插件
    +--------------- compile + ---------------编译
  • WebContent 网页内容
    +---- META-INF + ---- META-INF
    +--------- MANIFEST.MF + --------- MANIFEST.MF
    +---- WEB-INF + ---- WEB-INF
    +--------- lib + --------- lib
    +----------web.xml + ---------- web.xml

Thanks for your help 谢谢你的帮助

我在这篇文章之后再次将项目从maven转换为webapp,然后它起作用了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer - ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException - org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException Tomcat 7 ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer - Tomcat 7 ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer - java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer 服务器启动时org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException - org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException on server startup 泽西岛-java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer - Jersey - java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer Tomcat Jersey Eclipse ClassNotFound org.glassfish.jersey.servlet.ServletContainer - Tomcat Jersey Eclipse ClassNotFound org.glassfish.jersey.servlet.ServletContainer 找不到类:org.glassfish.jersey.servlet.ServletContainer - Class Not found: org.glassfish.jersey.servlet.ServletContainer 如何解决“weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer”错误 - how to solve "weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer" error java.lang.ClassCastException:org.glassfish.jersey.servlet.ServletContainer无法转换为javax.servlet.Servlet - java.lang.ClassCastException: org.glassfish.jersey.servlet.ServletContainer cannot be cast to javax.servlet.Servlet
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM