在idea2024中编译jdk6项目

问题

最近接手一个基于 jdk6 的 jsp 老项目,需要给这个项目加点功能。在 idea2024 版中修改完代码,使用 jdk8 编译好 class 文件后替换到 tomcat 中项目跑不起来,查看日志发现有错误提示:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/catalina/startup/Bootstrap : Unsupported major.minor version 52.0

查看 tomcat 中配置文件后发现使用的 jdk6,之前看到 WEB-INF 下的 lib 包里有 spring-aop-3.2.2 之类的依赖,看错了看成 spring-boot-3.2.2 了还疑惑了一下老系统都升级到 Springboot3 了吗,还打算使用 jdk17 来编译,原来是看错了。

然后去查了一下,Spring3 支持 jdk6 和 jdk7,于是在 idea 上将项目的 jdk 版本切换为 jdk6 来编译,但是编译的时候 idea2024 提示最低支持的 jdk 版本是 jdk7。本来将项目使用的 jdk 版本切换成 jdk7 去编译就可以了,可是这个老项目是在云桌面里开发的,里面有 jdk6、jdk8,偏偏没有 jdk7 文件,还无法下载也无法上传。

解决方案

先是根据 AI 的提示修改了 idea 的相关配置,但还是报错,无法成功编译。

最后在 segmentfault 里看到一个同样的问题,按回复中的方法试了一下成功编译出来了,替换到 tomcat 中后功能正常。
IDEA环境配置失败,Java项目需要JDK 1.6如何解决?

具体的配置:

  1. 打开 File - Project Structure,设置 Project SDK 为 jdk8,Project Language Level 设置为 7(保持兼容性)
  2. 将 Module 中的 jdk 版本设置成 jdk6
  3. 在 File > Settings > Build, Execution, Deployment > Compiler > Java Compiler 中,在 Additional command-line parameters 中添加:-source 1.7 -target 1.7,强制用高版本 jdk 编译出兼容低版本 jdk 的字节码,设置完之后就可以进行编译了。