出現java.lang.UnsupportedClassVersionError 錯誤的緣由

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


由於,高版本的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。ide


有一個名叫 Toby Reyelts 的開發人員決定消除 JDK 5.0 編譯器限制。結果就是開放源代碼的 Retroweaver 項目。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上。ip


同一配置區下的已安裝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錯誤發生了!

相關文章
相關標籤/搜索