2012-06-21 80 views
14

我想將Netbeans分析器附加到我的Java項目,但它會被Connecting to the target vm卡住。Netbeans Profiler:永遠連接到目標虛擬機

我發現這個old bug report但這已經修復了。我的版本是7.1.2與Java 1.7.0_04在Windows 7上。

我試圖禁用防火牆,並啓動Netbeans作爲管理員,但仍然有同樣的問題。

有點奇怪的是,校準工作正常。

我感覺這是Java 7的一個問題。因爲如果我查看profiler\lib\deployed沒有jdk17文件夾。只有jdk16和jdk15。

有什麼想法?

+1

你有沒有試過一個虛擬項目(比如說一個類,有一個可以永久睡眠的主類),看看它是否與你的項目相關的權限/設置/ ...問題? – assylias

+2

是的,這沒有奏效。但事實證明,如果我使用動態連接模式,它就可以工作。謝謝! – PiTheNumber

回答

12

我發現探查器的工作,如果我動態附加它。因此,您必須先啓動應用程序(帶有中斷點)。然後單擊Profile> Attach Profiler ...在頂部選擇您的項目並附加一個本地動態分析器。如果您已經創建了錯誤的文件,您可以在Attach Profiler對話框的底部進行更改。現在選擇正在運行的進程,就是這樣。

+1

已加載代理JAR,但代理未能初始化。 –

1

我在使用NetBeans 8.0.2來分析多模塊maven項目中的junit測試時遇到同樣的問題。

我通過將測試抽取到獨立的Maven項目中並將其他模塊添加爲依賴項來解決此問題。

它在多模塊項目中不起作用的原因是單擊配置文件測試文件 NetBeans生成不正確的命令行。 例如在多模塊項目時,它產生:

cd C:\test; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_40" cmd /c "\"\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven\\bin\\mvn.bat\" -Dtest=PerfTest -DforkMode=once -Dmaven.surefire.debug=${exec.args} -Dexec.args= -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 surefire:test\"" 

而它應該是:

cd C:\test; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_40" cmd /c "\"\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven\\bin\\mvn.bat\" -Dtest=PerfTest -DforkMode=once -Dmaven.surefire.debug=${exec.args} -Dexec.args=\"-agentpath:\\\"C:/Program Files/NetBeans 8.0.2/profiler/lib/deployed/jdk16/windows-amd64/profilerinterface.dll\\\"=\\\"C:\\Program Files\\NetBeans 8.0.2\\profiler\\lib\\\",5140,10 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\\Users\\foo\\AppData\\Local\\NetBeans\\Cache\\8.0.2\\mavencachedirs\\2029222463\\org-netbeans-modules-profiler \" -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 surefire:test\"" 

TL; DR - 的-Dexec.args =參數是在多模塊項目是空的。

+0

這似乎在NetBeans 8.1中得到修復 – tanderson