生产环境应选用OpenJDK 21 LTS(支持至2026年),从Adoptium或BellSoft官网下载msi安装包,架构与系统一致,安装路径无空格中文,正确配置系统级JAVA_HOME和Path,并确保运行JDK版本不低于编译版本,启用G1GC及固定堆内存与GC日志。
怎么选JDK版本和安装包
生产环境别碰Oracle JDK 8免费版,它早就不更新了,连安全补丁都停了。OpenJDK是唯一靠谱选择,推荐使用LTS版本:
或
,优先选
(2023年9月发布,LTS支持到2026年)。下载必须认准官方渠道:
(Eclipse Temurin)或
(Liberica),别用第三方打包的“精简版”——它们常删掉
、
甚至
,出问题时连线程堆栈都抓不到。
安装包选
格式,不是
:自动注册系统变量、关联文件类型、写入Windows事件日志,运维排查有依据
架构必须和服务器一致:x64服务器上装
,别混用ARM64或32位包,否则
能跑,但Spring Boot启动直接报
安装路径避免空格和中文:
可以,
不行——某些老脚本会把空格当参数分隔符,导致
解析失败
JAVA_HOME 和 Path 怎么设才不翻车
Windows服务、IIS反向代理、甚至Tomcat Windows Service Installer,全依赖
环境变量。只设
不设
,多数中间件启动就失败。
必须指向JDK根目录,不是
子目录:
✔️,
❌
里只加
,别重复写死绝对路径,否则升级JDK后要改两处
所有变量用
系统级环境变量
,不是当前用户级——Windows服务默认以
或专用账户运行,读不到用户变量
设完重启命令行窗口,用
和
双重验证:前者输出路径,后者返回
才对
为什么 Tomcat / Spring Boot 启动报 “Unsupported class file major version”
这错误90%是JDK编译版本和运行版本不匹配。比如用
编译的WAR包,扔进只装了
的服务器,必然崩。
查看应用编译目标版本:
,结果是65 → 对应JDK 21,61 → JDK 17
运行环境JDK版本 ≥ 编译版本,但
不能低
:JDK 17运行JDK 21编译的字节码?不行。反过来可以(JDK 21运行JDK 17编译的包),但不建议——可能触发
(模块访问规则变严)
Maven项目检查
里的
:
和
必须和服务器JDK一致
Spring Boot应用还要看
版本兼容性:2.7.x最高只支持JDK 17,3.2.x才正式支持JDK 21
GC 日志和内存参数怎么配才稳
生产环境不配GC参数=裸奔。默认
在多核服务器上容易抢CPU,而
没调优又常因大对象触发Full GC。
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
立即学习
“
Java免费学习笔记(深入)
”;
强制指定GC算法:
(JDK 9+默认,但显式写上更明确)
内存参数必须成对出现:
,禁止
——Windows下JVM申请虚拟内存后不释放,堆扩缩反而引发卡顿
开启GC日志(JDK 11+):
,路径必须提前建好
目录并赋权给运行账户
禁用
(除非确认应用大量重复字符串)——它增加GC停顿时间,且只对G1有效,ZGC/Shenandoah不支持
JDK配置最麻烦的不是装不上,而是装上了但被另一套旧环境变量覆盖,或者服务账户根本读不到
。上线前一定用服务账户手动执行一次
,别只在管理员CMD里测。
jdk-17jdk-21jdk-21https://www.php.cn/link/e387385ebe0dbeefed3e8e9f3968aabahttps://www.php.cn/link/33c54daf901630e4e088b9986156a597jmodsjavacjstackmsizipjdk-21_x64.msijava -versionUnsatisfiedLinkErrorC:\Java\jdk-21.0.2C:\Program Files\Java...JAVA_HOMEJAVA_HOMEPathJAVA_HOMEJAVA_HOMEbinC:\Java\jdk-21.0.2C:\Java\jdk-21.0.2\binPath%JAVA_HOME%\binLocalSystemecho %JAVA_HOME%where java%JAVA_HOME%\bin\java.exejdk-21jdk-11javap -v YourApplication.class | findstr "major"IllegalAccessErrorpom.xmlmaven-compiler-plugin21 21 spring-boot-starter-parentUseParallelGCG1GC-XX:+UseG1GC-Xms4g -Xmx4g-Xms2g -Xmx8g-Xlog:gc*:file=C:/logs/gc.log:time,tags,levelC:\logs-XX:+UseStringDeduplicationJAVA_HOMEjava -version