我知道如何使用Eclipse调试远程Java VM,但是如何使用Java Web Start程序来完成它.我遇到的问题只出现在Java Web Start中.它必须与安全相关.
我需要一个适用于当前Java VM(如1.6.0_12)的解决方案.
它与您要远程调试的任何其他Java进程完全相同:您必须为VM(-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345
)设置一些参数,然后连接到给定端口.在Java webstart 6.0中,可以使用-J选项在早期版本中通过环境变量JAVAWS_VM_ARGS来完成.详情请见此处.
手动启动JWS VM.这样您就可以提供启动参数来打开调试端口.这是一个描述,它是这样的:
set JAVAWS_TRACE_NATIVE=1 set JAVAWS_VM_ARGS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=n" javaws http://server:port/descriptor.jnlp
至于较新版本的Java(Java 8u20 +和Java 7u70 +),我遇到像-Xrunjdwp这样的参数不能直接传递,也不能使用JAVAWS_VM_ARGS.消息
Rejecting attempt to specify insecure property: -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
开始显示在控制台输出中.
对我有用的唯一解决方案是将这些参数传递给JAVA_TOOL_OPTIONS系统变量.
您还可以使用-J选项向javaws可执行文件提供debug参数
例:
javaws.exe -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 http://server:port/descriptor.jnlp