簡體   English   中英

已由較新版本的 Java 運行時編譯(類文件版本 57.0)

[英]Has been compiled by a more recent version of the Java Runtime (class file version 57.0)

我使用 IntelliJ 遇到了這個問題。 但是我的系統上新安裝的所有東西都是最新版本。

...已由較新版本的 Java 運行時(類文件版本 57.0)編譯,此版本的 Java 運行時只能識別 52.0 以下的類文件版本

我已經設置:

PATH 為 C:\Program Files\Java\jdk-13 JAVA_HOME 為:C:\Program Files\Java\jdk-13 JRE_HOME 為:C:\Program Files\Java\jre1.8.0_221

我已經設置了路徑,試圖在項目結構中找到一個變化

完整的錯誤信息:

H:\087-JAVA\HelloWorld\src>java com.codewithmosh.Main
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/codewithmosh/Main has been compiled by a more recent version of the Java Runtime (class file version 57.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)

您需要仔細檢查PATH環境設置。 您當前擁有C:\Program Files\Java\jdk-13不正確。 請確保您在PATH列表的頂部有最新 JDK 版本的bin子目錄。

java.exe可執行文件位於C:\Program Files\Java\jdk-13\bin目錄中,這就是您需要在PATH中擁有的內容。

使用此工具可以快速驗證或編輯 Windows 上的環境變量。 它允許重新排序PATH條目。 它還將以紅色突出顯示無效路徑。

如果您還希望代碼在較低的 JDK 版本上運行,請更改 IDE 中的目標字節碼版本。 有關相關屏幕截圖,請參閱此答案

另請參閱 Java class 文件版本的此答案 發生的情況是,您使用 Java 13 和 13 語言級別字節碼(目標)構建代碼,並嘗試使用 Java 8 運行它,這是第一個(默認) PATH版本根據 3 變量配置。

The solution is to have Java 13 bin directory in PATH above or instead of Java 8. On Windows you may have C:\Program Files (x86)\Common Files\Oracle\Java\javapath added to PATH automatically which points to Java 8 now :

java路徑

如果是這種情況,請從PATH中刪除突出顯示的部分,然后注銷/登錄或重新啟動以使更改生效。 您需要首先以管理員身份重新啟動才能編輯系統變量(請參見系統變量列右上角的按鈕)。

這是 IntelliJ IDEA 中的設置( $JAVA_HOME和語言級別設置為 1.8):

File > Settings > Build, Execution, Deployment > Gradle > Gradle JVM

Select 例如。 Project SDK (corretto-1.8) (或任何其他兼容版本)。

然后刪除build目錄並重啟IDE。

我也遇到了類似的問題, 這里被問到。 問題是某些應用程序帶有自己的 JRE,有時安裝的 JDK 出現在環境路徑中的優先級較低。 現在有兩種選擇:

  1. 卸載具有自己的 JDK/JRE 的其他應用程序。
  2. 有時無法刪除其他應用程序,這就是我的情況。 所以我將我安裝的 JDK 移到了環境路徑中的更高優先級。

在此處輸入圖像描述

我還刪除了@CrazyCoder 建議的路徑

當我嘗試運行一些 Groovy 腳本時,我遇到了IntelliJ的類似問題。 這是我解決它的方法。

Go 到“項目結構”->“項目”->“項目語言級別”和 select“SDK 默認”。 這應該對所有項目模塊使用相同的 SDK。

最簡單的解決方案是更改 IDE 中的 Java 版本。 在 Intellij 中,go 為文件 --> 項目結構並將項目 SDK 更改為 Java 運行時支持的版本(在您的情況下,它對應於版本 8 或更少)。 下表顯示了 Java SE 版本和主要版本之間的映射:

Java SE 主要版本
1.0.2 45
1.1 45
1.2 46
1.3 47
1.4 48
5.0 49
6 50
7 51
8 52
9 53
10 54
11 55
12 56
13 57
14 58
15 59
16 60

該表取自:https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-4.ZFC35FDC70D5FC69D26EZ883A822C7A53

我如何在 Eclipse 中解決它

  1. go 到項目的屬性在此處輸入圖像描述

  2. go 到 Java 編譯器在此處輸入圖像描述

  3. 將編譯器復雜級別更改為我的項目使用的 java(我的項目中的 java 11)您可以看到它是您在最后一條消息消失時工作的 java

  4. 申請在此處輸入圖像描述

當我通過 Oracle 安裝 JRE 並在研究后解決了這個問題時,我遇到了同樣的問題。

我將環境路徑C:\Program Files (x86)\Common Files\Oracle\Java\javapath H:\Program Files\Java\jdk-13.0.1\bin

像這樣:

小路

H:\Program Files\Java\jdk-13.0.1\bin
C:\Program Files (x86)\Common Files\Oracle\Java\javapath

或者

小路

%JAVA_HOME%
%JRE_HOME%

對我來說,刪除target文件夾后它起作用了

在 Linux 上,嘗試運行 SoapUI 時出現此錯誤。 安裝最新的 OpenJDK JRE package 修復了該問題,例如使用 Ubuntu: sudo apt install openjdk-17-jre

我在搜索引擎上發現了這個問題,所以也許它會幫助其他人。

問題是您使用 java 13(類文件 57)編譯代碼,並且 java 運行時設置為 java 8(類文件 8)

假設您在本地系統中安裝了 JRE 13 ,您可以將運行時從 52 更改為 57。您可以使用插件選擇運行時來做到這一點。 將 go 安裝到文件/設置/插件

在此處輸入圖像描述

將 go 安裝到Help/Find Action后,從下拉菜單中鍵入“runtime”和 select jre 13。

在此處輸入圖像描述

當我最近將 IntelliJ 版本升級到2020.3時,我遇到了這個問題。 我不得不禁用插件來解決這個問題。 插件的名稱是Thrift Support

禁用插件的步驟如下:

  1. 打開 IntelliJ 的首選項。 您可以通過在 mac 中單擊Command +,來執行此操作。
  2. 導航到plugins
  3. 在搜索 window 中搜索Thrift Support插件。 單擊復選框圖標以取消選擇它。
  4. 單擊應用圖標。
  5. 請參閱此圖像以供參考Disable_Thrift_support_plugin

有關更多詳細信息,請參閱此鏈接java.lang.UnsupportedClassVersionError 2020.3 版本 intellij 我在上面的鏈接中找到了這個對我有用的評論。

bin zhao 評論 2020 年 12 月 31 日 08:00 @Lejia Chen @Tobias Schulmann Workflow 我的 IDEA3.X 沒有安裝 Erlang 插件,我禁用了 Thrift Support 1.4.0 並且它工作。 IDEA 3.0 和 3.1 都有同樣的問題。

對於 eclipse IDE,

請按照以下步驟操作 -

  1. 右鍵單擊“項目”->“屬性”
  2. 單擊“Java 編譯器”
  3. 勾選“啟用項目特定設置”
  4. 更正“編譯器編譯級別”(附上參考圖片)
  5. 如果需要,請驗證並更正項目的 java 構建路徑。

Eclipse 項目屬性窗口

對於 Intellij IDEA 2021.2.3

將模塊 SDK 更新為 openjdk-17 后,它對我有用。 openjdk 版本“1.8.0_272”

File > Project Structure > Modules (Project Settings) > Module SDK (select openjdk-17) If openjdk-17 not there then from dropdown select Add SDK > Dwnload JDK and add openjdk-17.

  1. 文件
  2. 設置
  3. 構建、執行、部署:
  4. 編譯器
  5. Java 編譯器
  6. 項目字節碼版本中選擇 8

Intellij Project 字節碼版本 8

我在升級到 java 17 后遇到了問題。然后我運行的是舊的運行/調試配置,需要更新 JDK 的路徑

在此處輸入圖像描述

我在使用 Android Studio 時遇到了這個問題。
我通過將 Gradle 更新到 6.5 並將 Gradle 插件更新到 4.11 來修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM