我有一个VirtualMachine,我想从中提取“类路径”。本例中的VM使用RawCommandLineLauncher
启动。
我能找到的最接近的方法是VirtualMachine
方法allClasses
,但是我想在此之上再做一步,得到一个类目录列表,这可能吗?
我试过:
- 正在从VM获取
ClassLoader
。认为这不可能。 - 为此使用JDI实现。不幸的是,该方法不是公共的。
我有一个VirtualMachine,我想从中提取“类路径”。本例中的VM使用RawCommandLineLauncher
启动。
我能找到的最接近的方法是VirtualMachine
方法allClasses
,但是我想在此之上再做一步,得到一个类目录列表,这可能吗?
我试过:
ClassLoader
。认为这不可能。
2条答案
按热度按时间cedebl8k1#
jinfo <pid>
命令提供了一些洞察力,例如,它包含了一个正在运行的eclipse示例:然而,这只是应用程序启动时的初始类路径。根据应用程序的不同,它可能会根据运行时信息创建额外的类加载器,从而在运行时扩展类路径。例如,如果您正在运行一个Sping Boot Fat jar,初始类路径将包含FATJAR,并因此包含除JVM类本身之外的所有附加类。但是,这个fat jar是以spring Boot 格式存在的,实际的类路径由fat jar中包含的jar组成。
11dmarpk2#
您可以检查并强制转换为子接口PathSearchingVirtualMachine
上面的例子使用了instanceof pattern matching,这是一个新的语言特性,如果你使用的是旧版本的Java,那么就做一个普通的转换。