Tomcat Jersey Eclipse ClassNotFound org.glassfish.jersey.servlet.ServletContainer

我正在运行hello world示例。

但是,我使用的是2.7版本。

在maven pom.xml上我有

 4.0.0 com.mydomain.restful AdvertServer 0.0.1-SNAPSHOT Advert Server    org.glassfish.jersey jersey-bom 2.7 pom import      com.google.code.gson gson 2.2.4   javax javaee-web-api 6.0   javax.ws.rs javax.ws.rs-api 2.0 provided   org.glassfish.jersey.core jersey-client 2.7   org.glassfish.jersey.containers jersey-container-servlet-core 2.7      src   src  **/*.java      maven-compiler-plugin 3.0  1.7 1.7      

我尝试从命令行运行servlet,并在Eclipse上运行Server插件。 我犯了同样的错误:

 java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:126) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284) at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279) 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:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) 

奇怪的是我可以在.jar文件中看到这个类。 class上有。

我甚至尝试过添加jar跳过maven,但是Tomcat不会看到这个类。

Eclipse + tomcat – 部署时的ClassNotFoundexception

如果您同时安装了Maven Eclipse插件和Maven WTP插件,则这是自动的。 如果您没有安装这些,请继续安装它们,然后在Eclipse重新启动后右键单击项目并执行Maven>更新项目….这将在内部更改项目配置,以便将Maven依赖项复制到部署目标上的/ WEB-INF / lib文件夹。

如果您不想使用任何这些插件,则必须转到项目属性>部署程序集配置并手动添加依赖项,但这又是由这些插件自动完成的。

只是一个提示……

最后,你正在创建的是很好的旧战争文件……它应该在WEB-INF / lib下有你的库。 你检查过它是否正在发生? 我的意思是,您可以创建您的战争(右键单击项目资源管理器中的项目的Export / WAR文件),然后通过您的zip应用程序转到war文件中的WEB-INF / lib文件夹,并检查您的jar文件在那里。

如果它们不在那里,Eclipse不会正确地将您的库导出到war文件中。 您是否已将它们添加到构建路径(java构建路径/库和Java构建路径/订单和导出)?

 war 

在你的pom.xml中,当我通过使用库通过暂时将打包更改为jar时,我遇到了这个问题

  mvn clean install 

将其编译为jar并可以由您的其他项目引用,这在您的包装是战争时是不可能的。 当你忘记将包装改回战争时,我发现确切的错误堆栈跟踪出现了