出現java.lang.UnsupportedClassVersionError 錯誤的原因

來源:互聯網
上載者:User
http://blog.csdn.net/shendl/archive/2006/08/11/1050611.aspx
Quote:

出現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 項目(參見 參考資料 )。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錯誤發生了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.