服务器上执行打包提示没有编译器,java -version 却能正常输出版本。日志里能对上时间点,这种反而好排。
环境里装的是 JRE 或者 JAVA_HOME 指向了 JRE 目录,Maven 找不到 javac,构建时只能用运行环境去编译源码。这一点先确认清楚,后面就不用反复试。
echo %JAVA_HOME% where javac setx JAVA_HOME "C:\Program Files\Java\jdk-17"
「Maven 编译环境错误」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:确认 JAVA_HOME 指向 JDK 根目录;检查 PATH 里 javac 可用;构建镜像里安装完整的 JDK。
结果对不对很好判断,mvn -v 显示运行在 JDK 上,打包能生成可执行 jar。