背景
在本地装有jdk17也装有jdk8
正常在jdk8中运行的项目,因另一个项目需要,springbootAI的需要,换成了jdk17。今天再访问呢原来项目时,maven编译时报错。
检查1:
现象:
cmd命令检查
jdk版本已经切换成8版本
JAVA_HOME目录已修改
但cmd命令行查看jdk版本时,还是显示jdk17
原因:
卸载jdk17后,java -version还未显示成jdk8。在环境变量中的PATH目录下,安装jdk17的时候,会默认将jdk·17的信息放在首行,这样虽然手动改了JAVA_HOME的指向,但未生效。降jdk17的配置信息移动到jdk8的后面,显示正常。
C:\Users\AI>where java
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
D:\Program Files\Java\jdk1.8.0_211\bin\java.exe
D:\Program Files\Java\jdk1.8.0_211\jre\bin\java.exe
C:\Users\AI>echo %JAVA_HOME%
D:\Program Files\Java\jdk1.8.0_211
C:\Users\AI>java -version
java version "17.0.16" 2025-07-15 LTS
Java(TM) SE Runtime Environment (build 17.0.16+12-LTS-247)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.16+12-LTS-247, mixed mode, sharing)
检查2:
现象:
jdk已经是8版本,编译时报错
class lombok.javac.apt.LombokProcessor (in unnamed module @0x691a93f7) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x691a93f7
原因:
虽然你用了 JDK 1.8 编译,但这个错误表明:你实际上是在一个 JDK 9+ 的模块化 JVM 环境下运行(比如 JDK 17),而 Lombok 无法访问内部的 com.sun.tools 包。

能够确保的是,项目中用的lombok版本是1.18.10.

之前就可以,只是换了jdk后才异常。思路就是不升级Lombok版本,继续使用jdk8
检查3:
将IDEA中需要配置jdk的地方,都配置成8的后。maven clean也报错
cmd.exe /c "D:\softs\apache-maven-3.9.1-log4x\bin\mvn.cmd -Didea.version=2025.2 "-Dmaven.ext.class.path=D:\Program Files\JetBrains\IntelliJ IDEA 2025.2\plugins\maven\lib\maven-event-listener.jar" -Djansi.passthrough=true -Dstyle.color=always -s D:\softs\apache-maven-3.9.1-log4x\conf\settings.xml compile"
The JAVA_HOME environment variable is not defined correctly,
this environment variable is needed to run this program.
C:\Users\AI>java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
C:\Users\AI>echo %JAVA_HOME%
D:\Program Files\Java\jdk1.8.0_211
原因:
看似配置了JAVA_HOME,但MAVEN仍然无法识别它。

百度了下,以为是在目录Program Files文件夹中,有空格导致的。卸载jdk8。重新创建一目录安装。
重新执行时,报错更离谱

又重新百度了下,
idea中,file-project structure-project seeting中已经还原为jdk8。
有一种说法是,要保持默认的jdk名称,重新安装了一次。更改下项目用的jdk.
检查4:

这是什么原因,百度看来下
原因:
明明jdk都已经换成了8版本的了,怎么还会有去找17的内容呢。

是的,重新配置下jre,之前一直修改的jdk,这块倒是没有想起来。

总结:
还是得相信原来环境,升级一个组件,有时涉及到的就有点多了。因为我知道,原来是可以的,只是换了jdk17后才异常,就全部还原回去。

936

被折叠的 条评论
为什么被折叠?



