无法从 jconsole 连接到使用 jlink 构建的应用程序

问题描述 投票:0回答:2

我编写了一个提供多个 MBean 的 Java 17 应用程序。如果我通过

java -jar myjar.jar
使用标准 Java 17 SDK 启动 jar,应用程序就会启动,我可以从 JConsole 连接到它。

然后我使用 jlink 创建了一个自定义运行时映像。

应用程序本身可以在此图像上正常运行。它获取 MBeanServer 并成功注册我的 MBean。

当我启动 Jconsole 时,我可以选择正在运行的应用程序(作为“本地进程”),但无法创建与该进程的连接。

我尝试添加一些附加模块(如 jdk.management、java.management,...),但没有成功。似乎至少缺少一个模块,因为在我的客户运行时映像中,例如DLL management_ext.dll 丢失。

知道哪些模块是必要的吗?

java jconsole jlink
2个回答
0
投票

尝试使用

jdeps
检查构建中所需的所有模块。

列出来自

.jar

的所有模块的示例
jdeps --ignore-missing-deps --print-module-deps --multi-release 17 your-jar.jar 

示例

jlink

jlink \
    --module-path /path-with-all-jdk-modules \
    --add-modules $(jdeps --ignore-missing-deps --print-module-deps --multi-release 17 your-jar.jar ) \
    --output /path-output-jre-custom \
    --strip-debug \
    --no-header-files \
    --no-man-pages \
    --compress 2


0
投票

我必须添加

jdk.management.agent
。添加了
management.dll
management_agent.dll
management_ext.dll
好像没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.