2017-03-07 56 views
1

我正在嘗試在我的Java程序中使用sum.jvm工具。它可以讓我用sun.jvm編程*但是當我嘗試編譯它(乾淨,安裝),我得到這個:Maven編譯時找不到sun.jvm.hotspot

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

基本上一噸的這些錯誤的地方,我用一個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(); 
    }); 
} 

,我使用的工具的子類進行測試。在我參考sun.jvm的任何項目中,當我嘗試使用Maven進行全新安裝時,會出現此錯誤。它使用IntelliJ的內置編譯器構建,但不包含Maven。

我也嘗試重新導入Maven,甚至重新安裝IntelliJ並用全新安裝進行編譯。

它發生在所有sun.jvm.hotspot。*路徑中。

感謝, Erouax

回答

2

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

+1

我如何將它添加到我的CLASSPATH?我在OS X上。 我運行了命令「export CLASSPATH = $ CLASSPATH:$ JAVA_HOME/lib/sa-jdi.jar」但它仍然不起作用? – Erouax

+1

@Erouax將'sa-jdi.jar'添加到IDE的項目屬性中的依賴項列表中。 – apangin