Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apache tomcat服务器上的500内部服务器错误_Java_Tomcat_War_Tomcat8 - Fatal编程技术网

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

Java apache tomcat服务器上的500内部服务器错误,java,tomcat,war,tomcat8,Java,Tomcat,War,Tomcat8,我有一个war文件,我将它部署在我的第一台服务器上。那里一切都很好。 你可以在电脑上测试 (端口不同,因为它位于防火墙后面) 但在我的新服务器中,我得到以下错误,两台服务器中的一切都是一样的。怎么了? 您可以在以下设备上进行测试: 类型异常报告 Servlet com.crmapi.services.ApplicationConfig的消息Servlet.init()引发异常 说明服务器遇到内部错误,无法满足此请求。 例外 javax.servlet.ServletException:servl

我有一个
war
文件,我将它部署在我的第一台服务器上。那里一切都很好。 你可以在电脑上测试 (端口不同,因为它位于防火墙后面) 但在我的新服务器中,我得到以下错误,两台服务器中的一切都是一样的。怎么了? 您可以在以下设备上进行测试:

类型异常报告
Servlet com.crmapi.services.ApplicationConfig的消息Servlet.init()引发异常
说明服务器遇到内部错误,无法满足此请求。
例外
javax.servlet.ServletException:servlet com.crmapi.services.ApplicationConfig的servlet.init()引发异常
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)
run(Thread.java:745)
根本原因
java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:309)
org.glassfish.jersey.servlet.WebComponent(WebComponent.java:315)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
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)
run(Thread.java:745)
注意,Apache Tomcat/8.0.36日志中提供了根本原因的完整堆栈跟踪。
ubuntu 16.04服务器x64
和Apache Tomcat/8.0.36相比,您的服务器上的JRE版本似乎有所不同。

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

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


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

对于同一个API,您是否有任何重复的资源(jar文件),比如在类路径中有两个不同版本的Jersey jar文件?@Yazan我如何检查它?检查您的类路径,对于web应用程序,它主要是在您的web应用程序或tomcat的
lib
文件夹中的
web-INF/lib
,确保没有重复的jar文件,如
jersey1.0.jar
jersey2.0.jar
(例如)@Yazan no。。。。没有重复,问题是为什么第一台服务器工作正常,而第二台服务器有问题?对不起,除了这个我不知道
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.