【踩坑記錄】java.lang.UnsupportedClassVersionError

一、背景

       現在大家用的JDK版本一般都是1.8。但是,總有一些已經無法重構的老項目,我們不敢動,只敢加代碼,它還維持着可怕的1.6版本。基於這樣的設定,JDK版本爲1.8的工程,提供api包,給老工程(JDK版本爲1.6)使用,老工程啓動時,出現瞭如下異常

java.lang.UnsupportedClassVersionError: 
 
com/yx/picture/api/domain/resultDO/PictureFileAndInfoDO : 
Unsupported major.minor version 52.0 
(unable to load class com.yx.picture.api.domain.resultDO.PictureFileAndInfoDO)

二、解決過程

1. 直白的翻譯:不支持的類版本錯誤,被支持的版本是52.0【CET-4飄過,見諒】

2. 版本52是啥呢?如下

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

3. 所以略微思考一下:支持JDK1.8,不支持當前環境JDK1.6。也有大佬是這麼說的,編譯版本低於運行版本【手動滑稽】

4. 解決方案:

plan A: 低版本升級

適用於小工程,比如自己的工程【不是】。業務複雜度較低的,升級版本影響不大。

plan B: 高版本降級

如果低版本的工程,業務複雜,歷史包袱重,大動作風險較高,那可以打一個低版本的api包,給低版本工程使用。

5. 如何打一個低版本的包: pom指定版本就好,工程本身的JDK版本無需改動orz

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章