2010-05-25 54 views
5

我不是Java程序員,所以我發佈了這個問題。在我的主類中,在eclipse項目中拋出java.lang.UnsupportedClassVersionError異常。如果我將這個類的進口註釋掉,它會編譯並運行正常。如果我把進口放回去,它不起作用。這是否意味着我導入的庫是用比我更新的或更早版本的java編譯的?當我在系統上執行java -version時,我得到了1.5_07eclipse中的java.lang.UnsupportedClassVersionError

我本來可以發誓這實際上是在上週工作,但也許在eclipse中的一些設置得到了調整? eclipse中的Java Build Path是什麼我需要查找以檢查JRE和編譯器版本?

回答

14

在Eclipse中,編譯器版本獨立於JRE版本進行設置。這意味着您可以將編譯器設置爲Java版本1.6並使用JRE 1.5。在這種情況下,你編譯的類不能運行。

您可以在Window/Preferences/Java/Compiler中查看默認編譯器合規性級別的首選項,或項目特定編譯器合規性級別的項目屬性。將該級別與項目中使用的JRE(Project/Properties/Java Build Path -> Libraries/JRE System Library)和程序的啓動配置(通過Run/Run Configurations...菜單)進行比較。

+0

這是個問題。謝謝。我沒有使用eclipse,也沒有意識到它可以像這樣獨立設置 – Derek 2010-05-26 16:19:29

0

Eclipse沒有使用JDK編譯器,但有自己的編譯器,它可以爲任何JRE生成字節碼。您需要確保將項目中的編譯器設置設置爲與您在Eclipse中註冊的JRE相同或更低的版本。請參閱Window/Preferences/Java/Installed JRE並檢查啓動配置中使用的JRE(請參閱運行菜單)。

0

如果您導入的類來自外部庫(即未從項目內的源編譯),那麼您應該驗證項目使用的JRE對於此庫是否足夠新。

2

UnsupportedClassVersionError意味着您正在使用的Java運行時環境無法識別您嘗試執行的類文件的版本。導致此錯誤的最常見原因是嘗試在較舊的Java版本上使用爲較新的Java版本編譯的類文件 - 例如,您正試圖在Java 5運行時環境中使用爲Java 6編譯的類。

正如Eugene所解釋的,Eclipse有其自己的內置編譯器,它不使用JDK中的編譯器 - 所以即使運行在Java 5上,也可以使用Java 6類文件。

Christian解釋瞭如何在Eclipse中設置Java類文件版本。

0

如果您在Eclipse中使用Maven,則可以使用Maven插件來更新項目,然後執行Maven「clean」。這在我的情況下解決了這個錯誤的愚蠢和意外的表現。

0

我知道這是一箇舊的線程,但我有一個最近的冒險與這種類型的錯誤。

當試圖在Eclipse中使用Ant構建文件編譯我的項目時。

  • Eclipse的開普勒(Java 1.7)
  • 螞蟻1.7
  • 項目= Java 1.5的

所有內部路徑和編譯器設置進行了修改,以看到的Java 1.5和項目在Eclipse中建立了良好的。

當試圖使用Ant進行編譯時,我在eclipse中獲得了java.lang.UnsupportedClassVersionError,並開始環顧四周 - 包括在這裏並找到這個頁面。

我的決議是這樣的:

Windows > Preferences > Ant > Runtime > Global Entries 

全球條目孩子指着Java 1.7 tools.jar

我添加了一個新的外部JAR(右菜單上),並指出它在Java 1.5 tools.jar

我刪除了原始條目(1.7 tools.jar),我的ant版本開始工作。

相關問題