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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值