java.lang.UnsupportedClassVersionError !

出現java.lang.UnsupportedClassVersionError錯誤的原因,是因爲我們使用高版本的JDK編譯的Java class文件試圖在較低版本的JVM上運行,所報的錯誤。

因爲,高版本的JDK生成的class文件使用的格式,可能與低版本的JDK的.class文件格式不同。這樣,低版本的JVM無法解釋執行這個.class文件,會拋出java.lang.UnsupportedClassVersionError不支持的Class版本錯誤。
這個錯誤尤其在JDK5與JDK5之前的版本上表現明顯。因爲,JDK5在Java語法上作了不少增強,引入了一些新的.class文件的元素,導致舊版本的JVM無法解釋、執行.class文件。即使這個類並沒有使用任何JDK5的新元素,但是JDK5生成的.class文件,JDK1.4及其以前的JVM都無法辨認!
所以,目前使用最廣的,還是JDK1.4。很多軟件和項目都無法使用JDK5。
 解決方法有如下兩種方法:

第一種:

有一個名叫 Toby Reyelts 的開發人員決定消除 JDK 5.0 編譯器限制。結果就是開放源代碼的 Retroweaver 項目(參見 http://www-128.ibm.com/developerworks/cn/java/j-cwt07065/#resources#resources)。Retroweaver 使用 classworking 技術來修改由 JDK 5.0 編譯器生成的二進制類表示,以便這些類可以與早期的 JVM 一起使用。
它通過修改JDK5生成的.class文件,將其變爲JVM1.4及之前版本能夠運行的.class文件。
目前,使用新版本的IDE編輯器可能會造成你遭遇java.lang.UnsupportedClassVersionError 錯誤。
比如,Eclipse3.2+MyEclipse5.0這個新版的IDE工具。進入首選項---Java---編譯器,可以看到,默認的編譯器依從等級是5.0,這裏改爲1.4,因爲我們使用的軟件需要運行在JDK1.4的JVM上。
同一配置區下的已安裝JRE中,不要安裝JRE,而是安裝JDK,指定1.4或1.5的JDK。還是使用jdk1.4。
在MyEclipse----應用服務器下,指定Tomcat5。指定Tomcat使用jdk1.4。
這樣,就全部指定使用Jdk1.4來編譯和運行程序了。如果全部指定jdk5也是可以的。但是,絕對不能夠使用jdk5編譯程序,而又在jdk1.4上運行程序,那樣將會拋出java.lang.UnsupportedClassVersionError不支持的Class版本錯誤。
這種情況下,不論是Eclipse生成的war包,還是ant文件生成war包,都使用jdk5編譯,就會在運行時出現錯誤,該應用程序將無法啓動。如果你查看Tomcat的日誌文件,將會看到正是java.lang.UnsupportedClassVersionError錯誤發生了!
第二種:
1、右鍵點擊工程文件,選擇屬性(properties),
2、在屬性窗口中選擇 Build-->Java,在右邊的選項中有四個下拉框,就可以看到編譯選項了,
3、其中Compiler和Debug Option可以不用管,只在Languege features和Target VM中選擇相應的JDK版本就可以了,然後確定,一切OK。
附件中是配置的圖片。
-----------------------------------------------------------
如果在Target VM中選擇了All Java SDKs,那麼你的class文件在使用JDK1.1的VM上都可以運行(Jbuilder2006幫助中是這麼說的,估計沒幾個人的機子上還在用JDK1.1吧 :-)

2.
Eclipse3.1同樣會出現相同的問題,這時候只需要把項目用的JDK與你安裝的JDK搞成版本一樣就解決了.
步驟:右擊你的項目-->屬性-->Java Compiler,設置合適的版本!!

發佈了40 篇原創文章 · 獲贊 0 · 訪問量 1716
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章