有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

apache tomcat服务器上的java 500内部服务器错误

我有一个war文件,并将其部署在我的第一台服务器上。那里一切都很好。 您可以在http://185.126.201.83:10808/crmapi/rest/v1/authentication/hi上测试它 (端口不同,因为它位于防火墙后面) 但在我的新服务器中,我得到以下错误,两台服务器中的一切都是一样的。怎么了? 您可以在:http://185.21.76.71:8080/crmapi/rest/v1/authentication/hi上测试它

type Exception report

message Servlet.init() for servlet com.crmapi.services.ApplicationConfig threw exception

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

exception

javax.servlet.ServletException: Servlet.init() for servlet com.crmapi.services.ApplicationConfig 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:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    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:315)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    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:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    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)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.36 logs.

ubuntu 16.04服务器x64 和ApacheTomcat/8.0.36


共 (4) 个答案

  1. # 1 楼答案

    我们可能遇到的另一个错误是,我们没有将servlet类声明为public 我们需要记住这一点,因为servlet容器总是在公共区域中查找servlet类,所以我们的servlet文件必须是公共的 否则我们会被解雇 错误500-内部服务器错误

  2. # 2 楼答案

    ApacheTomcat堆栈跟踪说明了一切。您的问题肯定是在应用程序的类路径中有多个JAX-RS JAR。它看起来像javax。ws。rs.core。应用程序类是从某个Jar加载的,但它没有返回Java的getProperties()方法。util。地图您需要严格检查是否存在重复的罐子。如果您无法手动找到它,您可以使用JHade之类的工具来检测是否存在重复的JAR。但是,如果您太确定应用程序类路径只有一个JAX-RSJAR,请仔细检查它在javax中是否具有所需的getProperties()方法。ws。rs.core。应用程序类。如果在这些行上调试代码,最终可能会得到一个解决方案。如果这对您有帮助,请告诉我:)。PS-JAX-rs1。x JAR没有getProperties()方法,但有JAX-RS 2。我有

  3. # 3 楼答案

    您的服务器上的JRE版本似乎有所不同

  4. # 4 楼答案

    看起来JAX-RS版本的jar不匹配。 使用maven控制您的JAX-RS版本。 如果您使用的是jersey,请使用2.23.2或更高版本

    您可以通过http://185.21.76.71:8080/crmapi/application.wadl检查部署是否成功