【踩坑记录】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>

 

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