Maven在编译时找不到sun.jvm.hotspot

Ero*_*uax 3 java jvm maven

我正在尝试在Java程序中使用sum.jvm工具。它让我程序中使用sun.jvm *但是当我尝试编译它(干净,安装),我得到这个:

error: package sun.jvm.hotspot.memory does not exist
Run Code Online (Sandbox Code Playgroud)

基本上,无论我在哪里使用sun.jvm参考,都有大量此类错误。

我看了看周围了很多,我看不出找到这个问题的任何人都那么远,没有人知道修复这个?

我试图创建扫描JVM某些字符串一个子类的工具,我发现我需要使用sun.jvm,但现在它不会工作。

这是我的方法:

@Override
public void run() {
    SystemDictionary dict = VM.getVM().getSystemDictionary();
    InstanceKlass stringKlass = (InstanceKlass) dict.find("java/lang/String", null, null);
    OopField valueField = (OopField) stringKlass.findField("value", "[C");

    long[] stats = new long[2];
    VM.getVM().getStringTable().stringsDo(s -> {
        s.printValueOn(System.out);
        System.out.println();
        stats[0]++;
        stats[1] += s.getObjectSize() + valueField.getValue(s).getObjectSize();
    });
}
Run Code Online (Sandbox Code Playgroud)

我使用到的工具的子类测试。在我引用sun.jvm的项目中的任何地方,当我尝试使用Maven进行全新安装时,都会出现该错误。它使用IntelliJ的内置编译器构建,但不使用Maven。

我还尝试过重新导入Maven,甚至重新安装IntelliJ并使用全新安装对其进行编译。

它发生的所有sun.jvm.hotspot。*路径。

谢谢,Erouax

apa*_*gin 5

添加$JAVA_HOME/lib/sa-jdi.jar到CLASSPATH。

  • 如何将其添加到CLASSPATH中?我在OS X上。我运行了命令“ export CLASSPATH = $ CLASSPATH:$ JAVA_HOME / lib / sa-jdi.jar”,但它仍然不起作用? (2认同)
  • @Erouax将`sa-jdi.jar`添加到IDE项目属性中的依赖项列表中。 (2认同)