编译

时间:2017-03-07 15:07:08

标签: java maven jvm

我试图在我的Java程序中使用sum.jvm工具。它允许我使用sun.jvm进行编程。*但是当我尝试编译它时(干净,安装)我得到了这个:

error: package sun.jvm.hotspot.memory does not exist

在我使用sun.jvm参考的任何地方,基本上都有很多这些错误。

我经常环顾四周,到目前为止我无法找到其他人解决这个问题......有没有人知道解决这个问题?

我试图创建一个Tools子类来扫描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();
    });
}

我正在使用Tools子类中的测试。在我的项目中我引用sun.jvm的任何地方,当我尝试使用Maven进行干净安装时,它会出现错误。它使用IntelliJ内置的编译器构建,但不是Maven。

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

所有sun.jvm.hotspot。*路径都会发生。

谢谢, Erouax

1 个答案:

答案 0 :(得分:4)

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