我在我的 java web 應用程式中收到以下錯誤(應用程式啟動正常,但是當我單擊按鈕時出現以下錯誤)。我正在使用 Tomcat (7.0.109) 來運行這個應用程式。
java.lang.UnsupportedClassVersionError: FileDetailsS??ervlet 已由較新
版本的 Java Runtime(類檔案版本 59.0)編譯,此版本的 Java Runtime 僅
識別最高 52.0 版本的類檔案(無法加載類 [FileDetailsS??ervlet])
以前我使用 Java 15(類版本 59.0)。但后來我切換到 JDK 和 JRE 1.8.0_311(類版本高達 52.0),因為其他 3rd 方應用程式。
這是我做的一些事情
- 我已經使用此
命令檢查了FileDetailsS??ervlet類的類版本。
javap -verbose FileDetailsServlet| findstr "major"
它顯示版本是 51.0 (Java 7)。 - 我在 Eclipse 中將 JDK 合規性設定為 1.8。(專案特定設定)
- 更改 JDK 后,我使用 JDK 1.8.0_311 重新編譯了所有檔案
- 我檢查了環境變數。JAVA_HOME 是“C:\Program Files\Java\jdk1.8.0_311” JRE_HOME 是“C:\Program Files\Java\jre1.8.0_311”,路徑是“C:\Program Files\Java\jdk1.8.0_311\bin "
我錯過了什么嗎?我不能回到 Java 15。那么有什么辦法嗎?
uj5u.com熱心網友回復:
檢查您的班級路徑是否有舊系統中的任何“剩菜”。看起來您沒有檢查正確的檔案。也許您在某個地方將 FileDetailsS??ervlet 作為依賴的錯誤版本,或者只是在“獨立”JAR 或 WAR 檔案中。
同樣重要的是,Eclipse 設定可能無法單獨涵蓋所使用的容器如何為 servlet 提供服務,那么您使用哪種技術來運行 FileDetailsS??ervlet?這是關鍵點:您用來運行的這個東西(Tomcat、Jetty、其他容器,可能包含在來自 Sprint Boot 或其他類似技術的胖 WAR 或胖 JAR 檔案中)必須使用正確的.class檔案。
當您使用 Tomcat 作為容器時:您應該檢查您的 tomcat 檔案夾下webapps/appname檔案夾中的類檔案(將 appname 替換為部署背景關系名稱) 注意:當您從 Eclipse 運行 tomcat 時,這可能是完全不同的地方磁盤上的安裝檔案夾,但我沒有準備好檢查的 Eclipse 安裝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432711.html
