Spring Boot-Fehler: java.lang.NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter

8

Ich schreibe gerade ein API-Backend mit Spring, das ich mit Spring Boot auf einem Produktionsserver bereitstellen möchte.

Wenn ich das Backend in Eclipse kompiliere in einen Krieg (spezifiziert in Maven) und Tomcat 7 benutze, läuft es ohne Probleme.

Wie ich jedoch auf dem Server bereitstellen möchte, verwende ich Spring Boot.

Anwendung.java

%Vor%

pom.xml

%Vor%

Wenn ich das gesamte Projekt auf meinen Linux-Server kopieren und das maven-Paket ausführen, wird der Code problemlos kompiliert. Wenn ich dann die generierte JAR-Datei mit java -jar [Name der Datei] ausführe, erhalte ich den folgenden Fehler:

%Vor%

Ich denke, das Problem ist, weil ich nicht die richtigen Versionen von Spring / Spring Boot habe (vielleicht versucht es eine falsche Version von Tomcat zu verwenden, so dass die Methode nicht existiert?)

Update 2015-04-06: Ich habe versucht, den Vorschlag von kucing_terbang, Spring Boot v1.1.10 zu verwenden, aber jetzt bekomme ich den Fehler wie folgt:

%Vor%

Update 2015-04-07: Ich habe es dann mit v1.1.12.RELEASE versucht, was ähnliche Fehler verursacht hat:

%Vor%

Ich habe dann ein mvn clean und mvn Paket ausprobiert, was mir beim Kompilieren folgenden Fehler einbrachte:

%Vor%

Wenn ich jedoch v1.2.3.RELEASE verwende, bekomme ich den Kompilierfehler nicht, und wenn ich dann zu v1.1.12.RELEASE wechseln und das mvn-Paket ohne eine Bereinigung ausführen werde, bekomme ich auch keinen Fehler (aber Ich erhalte den Fehler, wenn ich das Glas wie vorher laufen lasse).

Vielleicht deutet dies auf ein tieferes Problem hin?

Jede Hilfe zu diesem Thema wäre sehr willkommen.

Danke!

    
Coder Shark 04.04.2015, 09:12
quelle

4 Antworten

4

Ich habe versucht, Ihren Code auf meinem lokalen PC zu starten, und es gab einen ähnlichen Fehler wie bei Ihnen. Und das sind die Schritte, die ich gemacht habe, um diese Fehler zu entfernen.

  1. Aktualisieren Sie die Springboot-Version

    %Vor%
  2. Aktualisieren Sie Ihre Hauptklasse, da @SpringBootApplication Annotation nur nach Spring Boot Version 1.2.0 existiert

    %Vor%
  3. Entfernen Sie die " webapp-runner " - Abhängigkeit von pom.xml , da diese Bibliothek auch die Klasse org.apache.catalina.core.StandardContext hat, die mit der aus der eingebetteten Tomcat-Bibliothek in Konflikt steht.

    %Vor%

    Ja, entferne diese Zeilen;)

  4. Starten Sie die Anwendung und profitieren Sie dann?

kucing_terbang 07.04.2015, 15:21
quelle
22

Ich hatte genau das gleiche Problem mit Spring boot und embedded tomcat server .

Wie ich es behoben habe

Nach vielen Stunden hit and trial , running und re-running fand ich, dass ich ursprünglich hinzugefügt hatte lokaler Tomcat-Server zu meinem Projekt , der einen Konflikt mit dem eingebetteten Tomcat-Server verursachte, den Spring Boot bereitstellt. Nach dem Entfernen des Tomcat-Servers vom Build-Pfad des Projekts lief Spring Boot wie ein Zauber.

Klicken Sie mit der rechten Maustaste auf das Projekt

%Vor%

und entfernen Sie Ihre Tomcat-Server-Laufzeit, wenn Sie versehentlich eine hinzugefügt haben. Du solltest jetzt gut sein.

    
Abdullah Khan 06.06.2016 05:10
quelle
0

Ich hatte diesen Fehler bei mir, weil ich ein Maven-Projekt mit dem Webapp-Archetyp erstellt habe.

Das Projekt als einfaches Maven-Projekt neu zu erstellen, löste dieses Problem.

    
Ahatius 22.01.2016 09:02
quelle
0

Ich habe den Fehler bekommen, weil ich einige JAR-Dateien aus dem tomcat-lib-Ordner in den jdk-lib-Ordner kopiert habe. Es hat also eine inkompatible Version von Tomcat auf dem Klassenpfad. Ich habe dieses Problem nach der Neuinstallation von jdk gelöst.

    
Green Lei 16.08.2016 05:18
quelle