1. 程式人生 > >java 執行環境版本和編譯版本不匹配

java 執行環境版本和編譯版本不匹配

2015-06-01

周海漢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協議,轉載請註明來源