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



我编写了一个Java 17应用程序,它提供了几个mbean。如果我用标准Java 17 SDK通过java -jar myjar.jar启动jar,应用程序启动,我可以从JConsole连接到它。

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

应用程序本身在此图像下运行良好。它获得MBeanServer并成功注册我的MBean。

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

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

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

尝试使用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

我必须添加jdk.management.agent。这增加了management.dllmanagement_agent.dllmanagement_ext.dll似乎没有必要。

相关内容

  • 没有找到相关文章

最新更新