我對 Java 比較陌生,我完成了教程,其中解釋了如何創建和運行 JAR 檔案的示例。您能否就在命令列中運行我的 JAR 應該做什么提供建議?
我創建了 JAR 檔案:

此 Jar 檔案已復制到桌面

我希望該命令: java -jar 06_02.jar 應該執行該檔案。
在 IntelliJ 終端中,我切換到桌面目錄(檔案所在的位置)并運行:
java -jar 06_02.jar

這會導致錯誤:
錯誤:發生 JNI 錯誤,請檢查您的安裝并重試 執行緒“main”中的例外 java.lang.UnsupportedClassVersionError: com/example/java/Main 已由更新版本的 Java 運行時編譯(類檔案55.0 版),此版本的 Java 運行時僅識別最高 52.0 的類檔案版本
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
同時,如果我從 IntelliJ GUI 執行 JAR 檔案,它正在作業:


我的專案設定是:

請幫我解決這個錯誤。
我的機器上也有 Java 13:
uj5u.com熱心網友回復:
當你java -jar myjar.jar在命令列上鍵入時,你的命令列首先會做各種各樣的事情來弄清楚你的真正意思。特別是,java被翻譯成一些可執行檔案的絕對路徑。它通過掃描稱為PATHfor 目錄的環境變數,然后依次檢查每個 shell 是否包含名為java.exe. 如果是這樣,那就是假設你的意思。
您的java.exeshell 以這種方式找到的是來自java.exeJDK8 安裝的。我知道因為類檔案 v52 是 JDK8 產生的/是最大的。JDK8可以運行。
正如您的 intellij 螢屏截圖所示,您的代碼至少配置為 JDK11(我知道,因為版本 55 是 JDK11 及更高版本在-release 11模式下產生的,鑒于這些螢屏截圖,這就是您正在做的事情)。
因此,修復是以下 3 個之一:
- 使用 JDK11 顯式運行它。不要運行
java -jar foo.jar,運行C:\Program Files\Adoptium\JDK11\bin\java.exe -jar myjar.jar或諸如此類(該路徑不太正確,我不知道您的硬碟是什么樣的,但您明白了)。 - 弄清楚如何在系統上配置默認 JDK。這又取決于許多因素。每個作業系統都以不同的方式執行此操作。有時,
java.exe運行的只是一個包裝器可執行檔案,它檢查一些其他設定,例如JAVA_HOME注冊表項,以了解“活動 JDK”是什么,然后運行它。在這種情況下,您必須修復 JAVA_HOME 或其他問題 - 檢查您的系統上是否安裝了 java config 應用程式。或者,只需卸載 JDK8,并祈禱它回退到 JDK11(或重新安裝)。有時這只是編輯 PATH 的問題。 - 告訴 intellij 您想改為以 JDK8 為目標。請注意,您當然不能使用
varJDK9、10 或 11 中引入的任何語言特性(例如 )或 API(例如新的 HTTP 客戶端)。
大概你應該在這里處理第二個選項。
uj5u.com熱心網友回復:
您已經為 Java 11(類檔案格式版本 55)編譯了代碼,并嘗試使用 Java 8(類檔案格式版本 52)運行它。
Java 8 不理解來自更高 Java 版本的類檔案格式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/479073.html
