500 Internal server error auf apache tomcat server
ich habe eine war
Datei und ich im Einsatz auf meinem ersten server. jedes Ding ist in Ordnung dort.
Sie können es testen, auf http://185.126.201.83:10808/crmapi/rest/v1/authentication/hi
(port ist anders, weil es hinter einer firewall)
aber in meinem neuen server erhalte ich folgende Fehlermeldung und alles sind die gleichen in beiden server. was ist falsch?
Sie können testen Sie es auf : 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 Server x64
und Apache Tomcat/8.0.36
- haben Sie keine doppelten Ressourcen (jar-Dateien) für die gleiche API, wie 2-jar-Dateien für Jersey mit verschiedenen Versionen im classpath ?
- Wie kann ich es überprüfen?
- überprüfen Sie Ihre classpath, für eine web-app vor allem wird es
WEB-INF/lib
innen Ihre webapp oder tomcatlib
Ordner, stellen Sie sicher, dass es nicht zu einer doppelten jar-Dateien wiejersey1.0.jar
undjersey2.0.jar
(zum Beispiel) - Nein.... es gibt keine doppelte und die Frage ist, warum die ersten server funktioniert einwandfrei, aber der zweite hat das problem?
- sorry, ich habe keine andere Idee als diese
- Sagen Sie mir eine Sache, sind Sie mit maven bauen Ihr Projekt ?
- Ich habe denselben Fehler wie Ihr Problem. Haben Sie das gelöst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Apache-Tomcat-stack-trace sagt alles .Dein Problem ist definitiv, dass mehrere JAX-RS-jars in den Klassenpfad Ihrer Anwendung. Es sieht aus wie javax.ws.rs.core.Die Application-Klasse geladen wird, einige Jar-es muss aber nicht die getProperties () - Methode gibt ein Java.util.Karte . Sie müssen streng prüfen, Vorhandensein von doppelten Gläsern .Wenn Sie nicht finden können Sie manuell vornehmen , können Sie ein tool verwenden, wie JHade zu erkennen, die Anwesenheit von doppelten Gläsern .Aber wenn Sie auch sicher, dass die application-Klasse Weg hat nur eine JAX-RS-jar , überprüfen Sie bitte sorgfältig, ob Sie die erforderlichen getProperties () - Methode nicht oder nicht in der javax.ws.rs.core.Die Application-Klasse. Wenn Sie den code Debuggen, die auf diesen Linien, können Sie am Ende mit einer Lösung. Lassen Sie mich wissen, wenn dir das hilft 🙂 . PS - JAX RS 1.x Gläser nicht getProperties () - Methode, aber JAX-RS-2.x haben .
Sieht aus wie Sie haben jar Abweichung von JAX-RS Versionen.
Die Verwendung von maven zu Steuern Ihr JAX-RS version.
Wenn Sie mit Trikot, verwenden Sie 2.23.2 oder mehr Versionen.
Können Sie überprüfen, Ihre erfolgreichen Einsatz über http://185.21.76.71:8080/crmapi/application.wadl
Sieht es aus, dass die JRE-Versionen unterscheiden sich auf Ihren Servern.
Einer der anderen Fehler, die wir möglicherweise tun, dass wir nicht über unsere
servlet
Klasse alspublic
Diese Sache, die wir brauchen, zu erinnern, weil
servlet
container sucht immerservlet
Klasse in den öffentlichen Bereich, so dass unsereservlet
Datei muss public seinSonst werden wir bekommen
Fehler 500 - internal server error.