选 liberica jdk 需按场景选 standard(后端部署)、full(需 javafx/jfr)或 lite(alpine/serverless);装错导致 javafx 不可用、容器启动失败或 native-image 报 noclassdeffounderror。

怎么选 Liberica JDK 的版本(Standard / Full / Lite)
选错版本最直接的后果是:JavaFX 用不了、容器启动失败、或者 native-image 编译报 NoClassDefFoundError。Liberica 不是“下个安装包就完事”,它把功能拆得挺细。
-
Standard:默认推荐,不含 JavaFX 和 Flight Recorder,体积小、启动快,适合 Spring Boot、Tomcat、K8s 部署 ——
java -version能跑通,95% 的后端项目够用 -
Full:只在明确需要 JavaFX 或 JFR(比如做桌面工具、性能诊断)时才选;注意:Windows/macOS 上装 Full 版本才能直接
javafx.application.Application,否则编译会提示package javafx.application does not exist -
Lite:专为 Alpine Linux 容器、Serverless 场景设计,删了 JNDI、CORBA、部分安全提供者;Spring Boot 打成
jar后用它运行没问题,但别拿它去编译 ——javac工具链不全
下载安装时最容易卡在哪几个地方
官网下载页选项多,点错一个就白忙半小时。关键不是“选最新”,而是“选对平台+架构+格式”。
- Windows 用户务必选
.msi(不是.zip),否则环境变量不会自动配好,java -version会报 command not found - Alpine Linux 容器里必须用
musl构建版(页面上标着 “Alpine” 字样),普通 glibc 版本一运行就报no such file or directory—— 这不是缺库,是 ABI 不兼容 - macOS Apple Silicon(M1/M2/M3)要认准
aarch64,别手滑选成x64,否则 JVM 启动时会卡在Failed to create JVM - 下载完别急着双击:检查文件名是否含
jdk-17.0.x+xx-bellsoft或jdk-25.0.x+xx-bellsoft,带bellsoft才是 Liberica 官方构建;adoptium或temurin是另一家
验证是否真装对了,而不是 Oracle JDK 假扮的
很多团队以为换了个安装包就切换成功了,结果 java -version 看着像 Liberica,实际跑的是旧 Oracle JDK —— 因为 PATH 优先级没调对,或者 IDE 缓存了旧路径。
- 运行这段代码验证:
public class JdkChecker { public static void main(String[] args) { System.out.println("vendor: " + System.getProperty("java.vendor")); System.out.println("vm.name: " + System.getProperty("java.vm.name")); }}正确输出应含BellSoft和OpenJDK,而非Oracle Corporation - IDEA/VS Code 必须手动指定 JDK 路径:不能只改系统
JAVA_HOME,还要进Project Structure → SDKs或Java Home设置里重选,否则 Maven 编译仍走旧 JDK - Dockerfile 里别写
FROM openjdk:17-jre-slim,得换成 Liberica 官方镜像:FROM bellsoft/liberica-openjdk-debian:17-jre或:25-jre,否则白装本地版
Spring Boot 原生镜像(GraalVM native-image)为什么必须用 Liberica NIK
不是“能用就行”,而是 Spring 官方文档明确要求:用其他 JDK 编译 native-image 会报一堆 unsupported features 错误,比如 com.oracle.svm.core.jdk.UnsupportedFeatureError: Proxy classes are not supported。
- Liberica NIK(Native Image Kit)是 BellSoft 和 Spring 团队联合优化的 GraalVM 兼容版,预置了所有 Spring Boot 所需的 substitutions、reflection-config.json 和 JNI 配置
- 必须下载带
nik后缀的版本(如liberica-jdk-17+xx-nik),Standard/Full/Lite 版都不含native-image工具链 - 执行前先运行
gu install native-image(NIK 已内置该命令),别用 GraalVM 社区版单独装 —— 两者 TCK 认证级别不同,Spring Native 3.3+ 只认 NIK 的签名
真正麻烦的不是下载,是路径和权限链:JDK 安装路径不能含中文或空格,native-image 编译时若提示 Permission denied,大概率是 macOS Gatekeeper 拦了 native-image 二进制,得手动右键“打开”一次










