简体   繁体   English

部署到tomcat后的Jersey错误,在Eclipse中可以正常工作

[英]Jersey errors after deploying to tomcat, works fine in Eclipse

I've lost hours trying to pinpoint this annoying issue. 我已经花了几个小时试图找出这个烦人的问题。 I've created a simple Java app that exposes a few REST services using Jersey. 我创建了一个简单的Java应用程序,该应用程序使用Jersey公开了一些REST服务。

When debugging the application in Eclipse, using a Tomcat 8 server, everything works fine. 使用Tomcat 8服务器在Eclipse中调试应用程序时,一切正常。 I then export the project to a WAR file, deploy it to a real Tomcat 8 server, and when I try to call the REST services, I get the below error. 然后,我将项目导出到WAR文件,并将其部署到真正的Tomcat 8服务器上,当我尝试调用REST服务时,出现以下错误。 I've checked the obvious things: making sure I'm using the correct Java version on the server, making sure the libraries are included, ... But alas, I'm stuck. 我已经检查了明显的事情:确保我在服务器上使用了正确的Java版本,确保包括了库,但是,我被困住了。

type Exception report

message Servlet.init() for servlet Jersey REST Service threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
root cause    

java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:309)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:338)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:171)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:363)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)

All important libraries for the project are added in the WEB-INF, which are the following: WEB-INF中添加了该项目的所有重要库,如下所示:

  • aopalliance-repackaged-2.4.0-b10.jar aopalliance-repackaged-2.4.0-b10.jar
  • asm-debug-all-5.0.2.jar asm-debug-all-5.0.2.jar
  • commons-beanutils-1.9.2.jar commons-beanutils-1.9.2.jar
  • commons-collections-3.2.1.jar commons-collections-3.2.1.jar
  • commons-collections4-4.0.jar commons-collections4-4.0.jar
  • commons-logging-1.2.jar commons-logging-1.2.jar
  • gson-2.3.1.jar gson-2.3.1.jar
  • hk2-api-2.4.0-b10.jar hk2-api-2.4.0-b10.jar
  • hk2-locator-2.4.0-b10.jar hk2-locator-2.4.0-b10.jar
  • hk2-utils-2.4.0-b10.jar hk2-utils-2.4.0-b10.jar
  • httpclient-4.4.1.jar httpclient-4.4.1.jar
  • httpcore-4.4.1.jar httpcore-4.4.1.jar
  • java-json.jar java-json.jar
  • javassist-3.18.1-GA.jar javassist-3.18.1-GA.jar
  • javax.annotation-api-1.2.jar javax.annotation-api-1.2.jar
  • javax.inject-2.4.0-b10.jar javax.inject-2.4.0-b10.jar
  • javax.json-1.0.2.jar javax.json-1.0.2.jar
  • javax.servlet-api-3.0.1.jar javax.servlet-api-3.0.1.jar
  • javax.ws.rs-api-2.0.1.jar javax.ws.rs-api-2.0.1.jar
  • jaxb-api-2.2.7.jar jaxb-api-2.2.7.jar
  • jersey-client-1.7.jar jersey-client-1.7.jar
  • jersey-client.jar jersey-client.jar
  • jersey-common.jar jersey-common.jar
  • jersey-container-servlet-core.jar jersey-container-servlet-core.jar
  • jersey-container-servlet.jar jersey-container-servlet.jar
  • jersey-core-1.7.jar jersey-core-1.7.jar
  • jersey-guava-2.17.jar jersey-guava-2.17.jar
  • jersey-json-1.7.jar jersey-json-1.7.jar
  • jersey-media-jaxb.jar jersey-media-jaxb.jar
  • jersey-server.jar jersey-server.jar
  • joda-time-2.3.jar joda-time-2.3.jar
  • log4j-1.2.17.jar log4j-1.2.17.jar
  • org.osgi.core-4.2.0.jar org.osgi.core-4.2.0.jar
  • org.restlet.ext.gson-2.3.1.jar org.restlet.ext.gson-2.3.1.jar
  • org.restlet.ext.json.jar org.restlet.ext.json.jar
  • org.restlet.jar org.restlet.jar
  • osgi-resource-locator-1.0.1.jar osgi-resource-locator-1.0.1.jar
  • persistence-api-1.0.jar persistence-api-1.0.jar
  • unboundid-ldapsdk-se.jar unboundid-ldapsdk-se.jar
  • validation-api-1.1.0.Final.jar 验证API-1.1.0.Final.jar

I believe this is not because of missing jar.. I believe it is class loading issue. 我相信这不是因为缺少jar。我相信这是类加载问题。 The jersey jars are not being loaded (or) might have been loaded the wrong version. 球衣瓶未装入(或装入的版本可能不正确)。 Could you please check the dependencies properly and check for duplicate jars for jersey in your application. 您能否正确检查依赖性并在您的应用程序中检查球衣的重复罐子。

Also Please try by undeploying appliation and deploying again.. This might remove all the classes that were already loaded for taht application and Tomcat might intialize class loading again.. 另外,请尝试取消部署应用程序并再次进行部署。.这可能会删除已为该应用程序加载的所有类,而Tomcat可能会再次初始化类加载。

Hope this works... 希望这可以...

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM