java 執行環境版本和編譯版本不匹配
周海漢2015.6.1 兒童節快樂!
Caused by: java.lang.UnsupportedClassVersionError: com/xxx/Global : Unsupported major.minor version 52.0
根據 Java VM Spec, “A Java virtual machine implementation can support a class file format of version v if and only if v lies in some contiguous range Mi.0 v Mj.m. Only Sun can specify what range of versions a Java virtual machine implementation conforming to a certain release level of the Java platform may support.”
Java 的主版本號是:J2SE 8 = 52, J2SE_ 7 = 51, _J2SE 6.0 = 50, J2SE 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46, JDK 1.1 = 45.
“major.minor version 52.0” 就是jdk 1.8,當前環境不支援。即採用了J2SE 8來編譯的類,其class檔案的主版本major_version是52,最小版本minor_version是0.
如何解決 UnsupportedClassVersionError?
檢查是否使用了較老的jdk來執行新版jdk編譯的java程式。一般新版的jdk對老版的保持相容,除非是版本相差太多。
因為我出錯的原因是為了測試,將zshrc中的原jdk 1.8改成1.6了,所以報錯。
[email protected]~ % java -version
java version “1.6.0_65”
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
在.zshrc或.bashrc,.bash_profile中改回來。
#export JAVA_HOME=/usr/libexec/java_home -v 1.6
export JAVA_HOME=/usr/libexec/java_home
[email protected]~ % java -version
java version “1.8.0_45”
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
此時不再報上述錯誤,程式執行正常。
參考:
http://geekexplains.blogspot.com/2009_01_01_archive.html
http://ljhzzyx.blog.163.com/blog/static/383803122013719115332807/
如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源