Als ich in Eclipse eine Servlet-App erstellt und auf VPS bereitgestellt habe, ist die folgende Ausnahme aufgetreten.
javax.servlet.ServletException: Error instantiating servlet class [servlet.LoginServlet]
Die JDK-Version von Eclipse und die JRE-Version von Tomcat stimmten nicht überein, sodass Tomcat keine Klassendateien ausführen konnte. (Wenn die Java-Version zur Kompilierungszeit zur Laufzeit die Java-Version überschreitet, scheint eine Ausnahme aufzutreten.)
Fehlerprotokoll
Ursache
java.lang.UnsupportedClassVersionError:
servlet/LoginServlet has been compiled by a more recent version of the Java Runtime (class file version 55.0),
this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class [servlet.LoginServlet])
~ Unten abgekürzt ~
JRE-Version | Klassendateiversion |
---|---|
Java 8 | 52.0 |
Java 9 | 53.0 |
Java 10 | 54.0 |
Java 11 | 55.0 |
Java 12 | 56.0 |
Java 13 | 57.0 |
Java 14 | 58.0 |
Java 15 | 59.0 |
In diesem Fall wurde die App mit Version 55.0 (Java 11) kompiliert, es wurde jedoch versucht, sie mit Version 52.0 (Java 8) auszuführen.
Aktualisieren Sie die Version auf der Tomcat-Seite oder senken Sie die Version auf der Eclipse-Seite. (Ich habe beschlossen, diesmal die Eclipse-Seite zu wechseln.)
Wenn Sie vom Eclipse-Fenster zu `Fenster> Einstellungen
`wechseln, wird der Einstellungsbildschirm angezeigt. Wenn Sie zur Seite "Java> Compiler" wechseln, gibt es ein Element mit der Bezeichnung "Compiler-Konformitätsstufe" des JDK. Ändern Sie dies in "1.8".
`Projektname (Rechtsklick)> Eigenschaft
`angezeigt. Ändern Sie ihn daher dort.https://stackoverflow.com/questions/47457105/class-has-been-compiled-by-a-more-recent-version-of-the-java-environment http://www.ne.jp/asahi/hishidama/home/tech/java/version.html https://jpn.itlibra.com/article?id=21118
Recommended Posts