如何简便调试jpackage工具?解决模块导出等调试启动难题
调试jpackage的简便方法
方法1:用-J参数给jpackage添加远程调试选项
jpackage作为JDK自带工具,支持通过-J前缀向运行它的JVM传递参数。直接在命令行启动jpackage时加上调试参数:
# Windows/Linux/macOS通用命令 jpackage -J-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 <你的jpackage原有参数>
suspend=y:让jpackage启动后暂停执行,等待调试器连接,确保能捕获初始执行流程address=5005:调试监听端口,可自行修改
之后在你的IDE(IntelliJ IDEA/Eclipse等)中创建远程调试配置,设置主机为localhost,端口为5005,启动调试连接即可。
方法2:通过环境变量传递调试参数
如果-J参数无法生效,可通过设置环境变量让jpackage的JVM加载调试代理:
- Windows命令行:
set JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 jpackage <你的jpackage原有参数> - Linux/macOS终端:
export JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" jpackage <你的jpackage原有参数>
关联jpackage源码
无需编译完整JDK,只需:
- 下载对应JDK版本的OpenJDK源码
- 找到
jdk.jpackage模块下的Java代码(路径一般为src/jdk.jpackage/share/classes) - 将该源码目录导入你的IDE,调试时即可自动关联源码,查看执行细节
注意事项
- 调试时若遇到模块未导出的类,调试器仍可通过反射访问其执行流程,不影响断点调试
- 如果使用IDE的远程调试功能,确保端口未被其他进程占用
内容的提问来源于stack exchange,提问作者Santiago Ruiz
相关产品推荐
相关产品推荐

