Unsupported major.minor version 51.0

MyEclipse新導入項目啓動時出現這個錯誤:java

Caused by: Unsupported major.minor version 51.0
java.lang.UnsupportedClassVersionError: com/xxx/LoginAction : Unsupported major.minor version 51.0 (unable to load class com.xxx.LoginAction)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2961)
	......

查閱網上資料找到了緣由:用高版本JDK編譯的class文件運行在基於低版本JDK的Tomcat環境中(也即JDK比JRE版本高),會出現這個錯誤;解決辦法也是相應地將高版本JDK降爲合適的低版本便可。apache

但這之中還有些細節:Eclipse中有Build Path於Compiler之分,Build Path中須要選擇所採用的JDK版本,這個JDK是在開發時用於語法提示與特性(泛型等)支持;Compiler則是編寫完程序進行編譯時所用的JDK版本(例如部署到Tomcat以前MyEclipse會對代碼進行編譯,而後將class文件Deploy到Tomcat中)。app

而在真正運行時,則是基於JRE,也就是咱們一般指的JVM,若是編譯的JDK版本是6,JRE版本是7,程序能正常運行(向後兼容);若是編譯的JDK版本是7,JRE版本是6(低版本的JVM環境),那麼老JVM是沒法正常執行它所未知新版本編譯class文件。ui

在MyEclipse開發環境中,JDK與JRE通常都是一致的(不管是自帶的仍是本身下載安裝的),但Compiler Level就不必定與它一致,對於此次遇到的問題,除了檢查項目所依賴的JDK版本以外(在Install JREs中檢查安裝的JDK版本及確認Build Path中項目的JDK版本),還須要設置相應的Compiler Level,如圖:
spa


若是文章對你有用,請在收藏之餘「頂/贊」一下以示鼓勵吧 (/ω\)code

相關文章
相關標籤/搜索