2012-07-19 46 views
3

任何時候我使用Java Attach API時,都不會返回有效的VirtualMachines。我嘗試了通過VirtualMachine.list()返回的列表進行迭代,並且任何時候我認爲我已經獲得了進程ID,我嘗試使用VirtualMachine.attach(),並且它給了我一個NullPointerException,因爲attach()方法它本身從不初始化它試圖拋出的異常。我正在通過Eclipse和該應用程序本身的Windows進程運行該項目,運行時爲javaw.exe。我究竟做錯了什麼?Java Attach API:VirtualMachine.list()返回空列表?

+0

你解決了你的問題嗎? @ user1536747 – 2013-11-26 08:07:41

回答

3

我在使用JRE的java.exe而不是JDK的java.exe時遇到過類似的問題。

通過eclipse執行的應用程序運行良好,通過VirtualMachine.list()正確檢測到所有虛擬機,但是當我嘗試使用JRE中的java.exe執行獨立應用程序時,未檢測到任何虛擬機。 然後我發現我在eclipse中使用JDK,所以我已經將我的獨立應用程序中的java.exe更改爲JDK中的java,並且一切正常。

將您的eclipse項目的運行時JRE更改爲JDK,然後重試。這可能會解決您的問題。

+0

對於我來說,在catalina.bat和setclasspath.bat中設置JRE_HOME JAVA_HOME是不行的。你的操作細節是什麼? @Piotr K – 2013-11-26 08:07:11

+0

我安裝了java 1.8 JRE和JDK。我使用JRE從Eclipse中運行它時,VirtualMachine.list()返回了一個空列表。當我將JRE版本更改爲構建路徑上的JDK版本時,它突然列出了我正在運行的所有Java應用程序。 – Pieter12345 2016-01-17 10:45:09