我的目标是将Java分析器或调试器附加到由名为Nuix的Windows应用程序启动的Java虚拟机实例。
可以将命令行开关传递给Nuix,其中一些传递给JVM。
Nuix与JRE 8打包在一个子目录中:\Nuix 7.4\jre\
。看来特定版本是Java HotSpot(TM)64位服务器VM 1.8.0_92。
我用这些开关启动了Nuix:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80
然后我尝试在没有命令行开关的情况下运行jconsole.exe
,并且它无法识别Nuix启动的JVM。我尝试使用jdb.exe -attach <Port>
创建远程连接,但应用程序因此异常而失败。
java.io.IOException: shmemBase_attach failed: The system cannot find the file specified
我确认没有其他内容正在端口80上侦听,并且没有阻止。
附加调试器的正确方法是什么?
作为一个附带问题,Windows .exe如何使用JAR?我之前没有见过这种架构,我不相信使用IKVM.NET,因为应用程序是非托管的,所以不使用J#,根据Process Explorer。