Immer NoSuchMethodError:javax.- servlet.ServletContext.getVirtualServerName()
Stehe ich vor einem Problem bei der Bereitstellung des service in Tomcat 8. Immer folgenden Fehler :
Verursacht durch: java.lang.NoSuchMethodError:
javax.- servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
bei org.apache.tomcat.websocket.server.WsServerContainer.(WsServerContainer.java:149)
bei org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
bei org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
bei org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5244)
bei org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 mehr
Methode getVirtualServerName
wurde eingeführt, Servlet 3.1 und nach dem extrahieren MANIFEST.MF
aus meiner servlet-api
jar bekam ich folgende details :
Specification-Title: Java API for Servlets
Specification-Version: 3.1
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: javax.servlet
Welche sagt, dass seine unter 3.1. So gibt es einen anderen Grund für diesen Fehler? Bitte helfen Sie
Sind Sie auf jeden Fall mit Tomcat 8? Dein post is tagged 'tomcat7'...
Sorry, dass es ein Fehler war. Ich bearbeitet habe. Ich bin mit tomcat 8
was dachte ich auch, das ist, warum ich fragte über die Umgebung... willst du verwenden pom.xml ? sollten Sie vielleicht ändern Sie die Eigenschaft zu
<tomcat.version>
xxxx</tomcat.version>
auf dem tomcat-8... ?Ja, ich bin mit POM. Aber ich habe nicht erklärt
<tomcat.version>
. Also, wenn ich nicht erklären, was es dauern wird standardmäßig ?InformationsquelleAutor Rehman | 2016-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie alle Ihre Maven (oder gleichwertig) Abhängigkeiten und stellen Sie sicher, dass Sie - oder wahrscheinlich eine andere Abhängigkeit - nicht ziehen, in einer pre-version 3.1 der
javax.servlet /servlet-api
sein können, das Vorrang vor dem, was in Ihrem Tomcat-8. Wenn Sie schon manuell bereitgestellt, stellen Sie sicher, dass Sie noch nicht manuell kopiert alle servlet-api JARs ins Tomcat selbst.Finden Sie unter: https://stackoverflow.com/a/26232535/954442
Danke! Dies löste für mich. Meine Abhängigkeit war
google-oauth-client-jetty
habe ich es entfernt, da ich nicht brauchen es trotzdem und es funktioniert wieder.InformationsquelleAutor Andrew Regan
die Methode
getVirtualServerName
wurde Hinzugefügt, in ServletContext Servlet 3.1. Finden Sie das java doc der Methode getVirtualServerNamedieses problem kann mindestens 3 Ursachen haben:
Ihre servlet-version älter ist, dass 3.1.
andere jar hat das servlet ältere version als 3.1.
Ihre tomcat-version, die älter ist als 8
um es zu lösen, können Sie versuchen, die unten Weg.
I. überprüfen Sie Ihre pom.xml ob es den code unten.
wenn Ihr pom.xml hat der obige code würde es hat noch immer das problem. Sie können den zweiten Weg.
II. überprüfen Sie Ihre anderen jar hat beziehen sich auf die
javax.servlet-api
jar. zum Beispiel, dieorg.apache.santuario
hat, beziehen sich auf diejavax.servlet-api
jar. die pom.xml:aber, wenn man sich an die maven-Abhängigkeiten, Sie beziehen sich auf die
javax.servlet-api
Glas, dessen version 2.3, die älter als 3.1.so sollten Sie ausschließen, dass in der 2.3-version. pom.xml:
III. spring boot führen Sie den standardmäßigen tomcat-7. so definieren Sie Ihre tomcat-version, die 8 statt der tomcat 7. so fügen Sie den code von Ihrem pom.xml:
InformationsquelleAutor Dang
Hatte ich diesen Fehler auf IntelliJ mit maven nach der Aktualisierung IntelliJ.
Konnte ich die tests mit maven aber nicht von meiner IDE.
Ich löste das problem, indem Sie die
./idea
undproject.iml
Dateien und laden Sie das Projekt.InformationsquelleAutor zlandorf
Spring boot wird ausgeführt tomcat 7 per default, die Sie überschreiben müssen, maven-tomcat bauen.version in Ihrem pom.xml. Siehe unten zu laufen tomcat 8.0.30
Sollte dein problem lösen.
InformationsquelleAutor MrSimpleMind
Gelöst
Auf meinem mac mit java 8 wurde vor der Ausgabe mit tomcat heruntergeladen von der Website herunter und entpacken.
Mein Problem gelöst habe, da gab es ein extra servlet-api.jar Datei, die wurde immer abgeholt. Es war aus
/Library/Java/Extensions/servlet-api.jar
Für die Suche nach Sie es in Ihrem system, die Sie verwenden können
sudo find /-name servlet-api.jar
Entfernt es durch die Unterstützung, die Sie sich woanders.
War ich nach dieser für die intallation
https://gist.github.com/ddanailov-nmdp/c97aba2ca926b9627f6b4f7174083a32
InformationsquelleAutor Ankur
Nach einem großen Schmerz & sieben durch alle diese stackoverflow Antworten die einzige Sache, die landete bei mir war der Herabstufung von tomcat8 zu tomcat7. Ich weiß, dies ist keine ideale Lösung, und vielleicht war es nur eine frische Installation von tomcat, die mein problem gelöst. Wenn alle Stricke reißen geben, dass ein Schuss.
InformationsquelleAutor user2008914
Dieser hat sicherlich etwas zu tun mit der version von javax.servlet und Tomcat-version.
In meinem Fall, es ging Weg, als ich erklärte javax.servlet-dependency im gradle mit keiner version. Wie das -
InformationsquelleAutor Do Will