Ich habe seit 6-7 Stunden Schwierigkeiten, herauszufinden, was mit meinem Apache Tomcat Server schief gelaufen ist. In allen meinen Projekten wurde die jdk
-Version von 1.6
auf 1.8
umgestellt.
Um den version conflict
zu lösen, habe ich anhand von here überprüft, ob die kompilierte Version und die JVM der Tomcat-Version identisch sind.
Für mehrere Kontexte mit demselben Pfadfehler weiß ich, dass ich doppelte Kontext-Tags in server.xml
entfernen muss. Zuerst checke ich das Server-Projekt ein (das beim Hinzufügen des Apache Tomcat-Servers in Eclipse selbst erstellt wird) und finde dort kein Projekt. Also tauche ich tief in das Verzeichnis (Eclipse WorkSpace) metadata\.plugins\org.Eclipse.wst.server.core\tmp3\conf
ein und entfernte die doppelten Context-Tags dort mit Hilfe von here .
Wenn ich jetzt ein neues dynamisches Webprojekt erstelle, funktioniert alles gut und ich kann die Webseite sehen. Wenn ich jedoch versuche, auf HTML-Dateien zuzugreifen, werden XHTML-Dateien des alten Projekts angezeigt, in dem jdk geändert wurde. Dieser org.Apache.catalina.LifecycleException
wird weiterhin angezeigt, und der Server kann nicht gestartet werden. Daher werden diese doppelten Kontext-Tags immer wieder aufgebaut Jedes Mal, wenn ich den Server starte.
Keines meiner alten Webanwendungsprojekte scheint jetzt zu funktionieren.
Java.util.concurrent.ExecutionException: org.Apache.catalina.LifecycleException: Komponente .__ konnte nicht gestartet werden. [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/EdBurns_ChrisSchalk] - SEVERE: Ein untergeordneter Container ist beim Start fehlgeschlagen Java.util.concurrent.ExecutionException: org.Apache.catalina.LifecycleException: Komponente .__ konnte nicht gestartet werden. [StandardEngine [Catalina] .StandardHost [localhost]] .... Verursacht durch: Java.lang.RuntimeException: Unerwarteter Elementwert in Anmerkung: 0
Wie kann man verhindern, dass sich diese context-Tags immer wieder in server.xml ..__ aufbauen. Zweitens, wie können diese alten Webprojekte wieder in den Betriebszustand versetzt werden?
Dadurch wird verhindert, dass bei jeder Anforderung mehrere Kontext-Tags erstellt werden
1)Stoppen Sie den Server
2)Bereinigen Sie das Arbeitsverzeichnis von Tomcat
Ich hatte einen ähnlichen Fehler und habe ihn durch folgende Schritte behoben: 1. Öffnen Sie server.xml .__ unter Server-Projekt (das beim Hinzufügen von Apache Tomcat Server in Eclipse selbst erstellt wird). Kommentieren Sie die Zeile aus
<Context docBase=... />
Wenn Sie auf Annotation basierendes Servlet nicht verwenden, entfernen Sie bitte Annotation @WebServlet ("/ YourServletName") vom Start des Servlets. Diese Annotation verwechselt die Zuordnung mit web.xml. Nach dem Entfernen dieser Annotation funktioniert der Tomcat-Server ordnungsgemäß.
Dies scheint ein Problem mit dem lokalen Maven-Repository zu sein. (d. h. .m2-Ordner) kann auf eine beschädigte .jar-Datei zurückzuführen sein
Für mich haben die folgenden Maßnahmen zur Lösung dieses Problems beigetragen.
In meinem lokalen Dateisystem habe ich das Verzeichnis .m2 (lokales Maven-Repository) gelöscht.
In Eclipse hat das Projekt aktualisiert (wählen Sie Maven> Update Project )
Führen Sie die App erneut auf dem Tomcat-Server aus.
Stellen Sie einfach sicher, dass die Datei mit der richtigen web.xml-Konfiguration erstellt wurde. Ich habe die web.xml-Datei mit der Tomcat-Konfiguration aktualisiert und es hat bei mir funktioniert. Beispiel: -
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>simulator</display-name>
<description>simulator app</description>
<!-- File upload -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- Excel simulation -->
<display-name>simulator</display-name>
<description>simulator app</description>
<!-- File upload -->
<welcome-file-list>
<welcome-file>InsertPage.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>clari5.Excel.FileUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/excelSimulator/FileUploadServlet</url-pattern>
</servlet-mapping>
</web-app>
Eines der Probleme, die dies verursachen können, ist, wenn Sie vergessen, das Zeichen/in die WebServlet-Annotation @WebServlet ("/ example") @WebServlet ("example") einzufügen. Ich hoffe, es funktioniert, es hat bei mir funktioniert.
In meinem Fall steht die Datei servlet-api.jar in jre/lib/ext im Verzeichnis jdk in Konflikt mit der Datei servlet-api.jar in Tomcat, wodurch die Datei servlet-api.jar in jre/lib/ext im Verzeichnis jdk entfernt wird kann das Problem lösen.
Wenn Sie den folgenden Stack verwenden: Serverversion: Apache Tomcat/9.0.21 Servlet-Version: 4.0 JSP-Version: 2.3
Versuchen Sie dann, <absolute-ordering />
in Ihre web.xml-Datei. Ihre Datei sieht also so aus:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>spring-mvc-crud-demo</display-name>
<absolute-ordering />
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
......