You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jlink构建自定义JRE启动JavaFX程序时出现JNDI不支持错误

问题描述

开发了一个JavaFX小程序,打包为Jar后通过start.bat加载JavaFX模块可正常启动,但完整JRE17体积超400MB。使用jdeps分析依赖后,通过jlink生成了自定义JRE(目标体积约135MB),但在无Java环境的电脑上启动程序时出现以下错误:

WARN StatusConsoleListener JNDI lookup class is not available because this JRE does not support JNDI. JNDI string lookups will not be available, continuing configuration. Ignoring java.lang.NoClassDefFoundError: javax/naming/Context
Exception in Application start method

使用的命令如下:

jdeps --ignore-missing-deps --list-deps --multi-release 17 --module-path libs --add-modules ALL-MODULE-PATH ExpensesViewer.jar
jlink --no-header-files --no-man-pages --compress=2 --strip-debug --module-path libs;javafx/lib --add-modules java.datatransfer,java.desktop,java.logging,java.management,java.net.http,java.scripting,java.sql,java.transaction.xa,java.xml,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop --output java-runtime

使用的Java版本:

java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)
解决方案
  1. 添加JNDI相关模块
    错误提示缺少javax/naming/Context,该类属于java.naming模块,需要在jlink命令的--add-modules参数中加入该模块。修改后的jlink命令如下:
jlink --no-header-files --no-man-pages --compress=2 --strip-debug --module-path libs;javafx/lib --add-modules java.datatransfer,java.desktop,java.logging,java.management,java.net.http,java.naming,java.scripting,java.sql,java.transaction.xa,java.xml,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop --output java-runtime
  1. 验证依赖完整性
    如果添加java.naming后仍有问题,建议去掉jdeps命令中的--ignore-missing-deps参数,重新分析依赖,确保没有遗漏其他必要模块。修改后的jdeps命令:
jdeps --list-deps --multi-release 17 --module-path libs --add-modules ALL-MODULE-PATH ExpensesViewer.jar

该命令会严格检查所有依赖,避免遗漏隐藏的模块依赖。

  1. 检查JavaFX模块完整性
    确保javafx/lib路径下包含程序实际使用的所有JavaFX模块(如javafx.controls、javafx.fxml等),jlink的--module-path需正确覆盖这些模块,避免因JavaFX模块缺失导致启动失败。

内容的提问来源于stack exchange,提问作者Алексей Благодатских

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:00:18