Netbeans Profiler:永远连接到目标虚拟机

时间:2012-06-21 10:01:36

标签: java netbeans profiler java-7

我正在尝试将Netbeans探查器附加到我的Java项目中,但它被Connecting to the target vm所困扰。

我找到了这个old bug report但已经修复了。在Windows 7上,我的版本是7.1.2,Java 1.7.0_04。

我尝试禁用防火墙并以管理员身份启动Netbeans但仍然遇到了同样的问题。

有点奇怪的是校准工作正常。

我觉得这是Java 7的一个问题。因为如果我查看profiler\lib\deployed,则没有jdk17文件夹。只有jdk16和jdk15。

有什么想法吗?

3 个答案:

答案 0 :(得分:13)

如果我动态附加它,我发现了探查器的工作原理。因此,您必须首先启动应用程序(使用断点)。然后单击配置文件>附加Profiler ...在顶部选择您的项目并附加一个本地动态分析器。如果您已经创建了错误的,可以在Attach Profiler对话框的底部更改它。现在选择正在运行的进程,就是这样。

答案 1 :(得分: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 =参数为空。

答案 2 :(得分:0)

我有同样的问题。我认为问题是Java JDK与Netbeans版本不兼容,即使Java应用程序运行良好。我安装了 Netbeans 8.2 JDK 1.8 。为我工作