Java 了解JVM当前加载了哪些(JPMS)模块

Java 了解JVM当前加载了哪些(JPMS)模块,java,osgi,instrumentation,java-module,Java,Osgi,Instrumentation,Java Module,我有一个正在运行的JVM实例,其PID已知 考虑到有一些未命名的模块在起作用,是否有任何合理的方法可以从外部找出这个JVM实例当前加载了哪些命名的JPMS模块 我认为这可以通过处理jcmd VM.class_hierarchy的输出来实现,但在Java9+时代,对于一个简单且逻辑性强的问题来说,这肯定是太多的工作了。是否可以再次启动应用程序?另一方面,还有一些未命名的模块,主要是类路径上解析的所有JAR的模块。你可能指的是自动模块吗?我相信他在寻找加载到jvm@Naman的可观察模块,如果我是w

我有一个正在运行的JVM实例,其PID已知

考虑到有一些未命名的模块在起作用,是否有任何合理的方法可以从外部找出这个JVM实例当前加载了哪些命名的JPMS模块


我认为这可以通过处理jcmd VM.class_hierarchy的输出来实现,但在Java9+时代,对于一个简单且逻辑性强的问题来说,这肯定是太多的工作了。

是否可以再次启动应用程序?另一方面,还有一些未命名的模块,主要是类路径上解析的所有JAR的模块。你可能指的是自动模块吗?我相信他在寻找加载到jvm@Naman的
可观察模块
,如果我是wrong@Naman我的应用程序是基于OSGi的,因此是的,有多个类加载器在使用,因此有多个JPMS未命名模块,即使是从JVM内部获取所有模块也不像人们预期的那么容易。然后,也没有可导出该列表的内置功能。你必须自己实施。但不清楚您是在寻找一种实现这种特性的方法(即Java代码)还是一种提供信息的命令行工具。