我剛剛開始使用Java。我一直在按照這個問題的答案中的說明來編譯和運行我的第一個 Java 程序。我剛剛安裝了 JDK 11 并將路徑設置為C:\Program Files\Java\jdk-11\bin. 完成后,我已經能夠使用以下命令編譯我的程序:javac HelloWorld.java(該文件名為HelloWorld.java。)因此HelloWorld.class,目錄中會出現一個名為的文件。現在我嘗試使用以下命令運行程序:java HelloWorld這不起作用。我得到以下輸出:Error: A JNI error has occurred, please check your installation and try againException in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld 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 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)我看過這個問題,結合我收到的錯誤消息向我表明,無論 Java 正在運行我的程序,它都適用于比我的編譯器正在生成的舊版本文件。按照上述問題的答案的建議,我嘗試運行javac -target 8 HelloWorld.java. 但是,這也不起作用。我收到以下警告:warning: target release 8 conflicts with default source release 11并且沒有HelloWorld.class被創建。我有一種感覺,我需要 Java Runtime Environment 11,但我不知道您是如何獲得它的。搜索諸如“get JRE 11”之類的查詢會將我返回到提供“版本 8”的主要 Java 下載頁面。附錄:我保存的目錄HelloWorld.java稱為java,如果這有什么不同的話。
3 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
您的計算機上似乎安裝了 Public JRE 8。公共JRE復制它的安裝java.exe
和javaw.exe
成C:\Windows\System32
和做您的Windows其他一些變化,比如在你的注冊表更改。該C:\Windows\System32
目錄PATH
默認注冊在環境變量的系統部分。在 Windows 中,您有PATH
環境變量的系統和用戶定義,系統部分首先出現在最終PATH
環境變量中。您可以PATH
通過path
在cmd
窗口中運行命令來檢查最終結果。因此,當您運行java
第一個java.exe
Windows 時,找到并實際運行的是C:\Windows\System32
目錄中的一個,這java.exe
是無法運行較新 Java 類的 Public JRE 8。
與以前的 JDK 版本不同,JDK 11 沒有 Public JRE,因此在您安裝 JDK 11 之后,您的 Public JRE 8 并未升級。只需卸載所有公共 JRE,這將解決您的問題。您可以保留以前安裝的 JDK,它們不會打擾您。
添加回答
舉報
0/150
提交
取消