jdk版本衝突Unsupported major.minor version錯誤定位
jdk版本衝突會提示如Unsupported major.minor version 52.0
這種錯誤,不同的jdk版本會有對應的數字提示,52.0對應jdk1.8,51對應jdk1.7,以此類推。
這個錯誤主要產生的原因有兩類:
1. 一類是使用了高版本的jdk語法寫的代碼,使用低版本來編譯;
2. 使用maven、ant這類編譯工具的版本較低,環境中設置的jdk版本過高;
舉個之前遇到過的例子
背景說明:
使用ant進行編譯,ant腳本配置的jdk版本為1.6,用戶環境變量為jdk1.6
代碼編譯報錯:Unsupported major.minor version 52.0
定位步驟:
-
檢查jdk環境變量,發現版本正常
deploy@VM000002002 ~ $ java -version java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
檢查ant腳本配置,發現配置的也是jdk1.6,沒問題,繼續跟蹤
-
檢查ant工具依賴的jdk配置,因為前麵的步驟都正常,我分析很可能是工具依賴的jdk與配置的jdk不是同一版本
JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
到了這裏,發現配置直接依賴的$JAVA_HOME,順手一個
deploy@VM000002002 ~ $ vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH
果然如此,居然是一個新安裝的jdk1.8被配置到全局環境變量裏了,接下來去用戶環境變量裏做一下驗證
deploy@VM000002002 ~ $ vim .bash_profile # .bash_profile export JAVA_HOME=${HOME}/support/jdk
到此原因找到,ant編譯依賴的jdk指向了全局的係統變量jdk1.8,但是ant本身的版本較低,無法支持這個高版本的jdk。
最後更新:2017-07-15 20:34:07
上一篇:
EL語句中session及sessionScope的選取問題
下一篇:
雙向同步助力企業快速複製異地多活
基於xmpp聊天室實現,國外牛人作品
來雲棲社區的第一篇博客
國家天文台與阿裏雲成立科學技術指導委員會,探索宇宙終極問題
【Servlet】根據MVC思想設計用戶登陸、用戶注冊、修改密碼係統
《Spring Data 官方文檔翻譯》3. 其他幫助資源
ASP.NET中不定級動態菜單的實現
網絡子係統29_橋接轉發數據庫
System.Runtime.InteropServices.COMException (0x8004E00F): COM+ 無法與 Microsoft 分布式事務協調程序交談 (異常來自 HRESU
Informatica十年,走在大數據和人工智能的風口浪尖
2012下半年英特爾主板介紹