部署到tomcat后的Jersey错误在Eclipse

时间:2015-05-28 09:56:48

标签: java tomcat jersey

我已经失去了几个小时试图查明这个恼人的问题。我创建了一个简单的Java应用程序,它使用Jersey公开了一些REST服务。

在Eclipse中调试应用程序时,使用Tomcat 8服务器,一切正常。然后我将项目导出到WAR文件,将其部署到真正的Tomcat 8服务器,当我尝试调用REST服务时,我得到以下错误。我检查了一些显而易见的事情:确保我在服务器上使用正确的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)

项目的所有重要库都添加在WEB-INF中,如下所示:

  • aopalliance-重新包装-2.4.0-b10.jar
  • ASM-调试全5.0.2.jar
  • 公地BeanUtils的-1.9.2.jar
  • 公地集合-3.2.1.jar
  • 公地collections4-4.0.jar
  • 共享记录-1.2.jar
  • GSON-2.3.1.jar
  • HK2-API-2.4.0-b10.jar
  • HK2定位器-2.4.0-b10.jar
  • HK2-utils的-2.4.0-b10.jar
  • 的HttpClient-4.4.1.jar
  • 的HttpCore-4.4.1.jar
  • java的json.jar
  • 了Javassist-3.18.1-GA.jar
  • javax.annotation中-API-1.2.jar
  • javax.inject-2.4.0-b10.jar
  • javax.json-1.0.2.jar
  • 的javax.servlet-API-3.0.1.jar
  • javax.ws.rs-API-2.0.1.jar
  • JAXB-API-2.2.7.jar
  • Jersey的客户端 - 1.7.jar
  • 球衣-client.jar中
  • 球衣-common.jar
  • Jersey的容器servlet的core.jar添加
  • Jersey的容器的servlet.jar
  • 球衣核-1.7.jar
  • Jersey的番石榴2.17.jar
  • Jersey的JSON-1.7.jar
  • Jersey的媒体jaxb.jar
  • 球衣-的server.jar
  • 乔达 - 时间 - 2.3.jar
  • 的log4j-1.2.17.jar
  • org.osgi.core-4.2.0.jar
  • org.restlet.ext.gson-2.3.1.jar
  • org.restlet.ext.json.jar
  • org.restlet.jar
  • OSGi的资源定位器1.0.1.jar
  • 持久性的API-1.0.jar
  • unboundid-ldapsdk-se.jar
  • 验证-API-1.1.0.Final.jar

1 个答案:

答案 0 :(得分:0)

我相信这不是因为缺少jar ..我相信它是类加载问题。未装载(或)装备的衣架罐可能装错了版本。您能否正确检查依赖关系,并在您的应用程序中检查重复的jersey jars。

另外请尝试取消部署应用程序并再次部署..这可能会删除已经为taht应用程序加载的所有类,而Tomcat可能会再次初始化类加载..

希望这有效......