如何在Java Web Start(JNLP)下调试应用程序?

Hor*_*ux7 48 java debugging jnlp java-web-start

我知道如何使用Eclipse调试远程Java VM,但是如何使用Java Web Start程序来完成它.我遇到的问题只出现在Java Web Start中.它必须与安全相关.

我需要一个适用于当前Java VM(如1.6.0_12)的解决方案.

Kai*_*ann 25

它与您要远程调试的任何其他Java进程完全相同:您必须为VM(-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345 )设置一些参数,然后连接到给定端口.在Java webstart 6.0中,可以使用-J选项在早期版本中通过环境变量JAVAWS_VM_ARGS来完成.详情请见此处.


mko*_*ler 23

手动启动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
Run Code Online (Sandbox Code Playgroud)

  • 只需注意,在Windows中(在XP上测试)当您设置`JAVAWS_VM_ARGS`时,您必须OMIT THE DOUBLE QUOTES`设置JAVAWS_VM_ARGS = -Xdebug -Xnoagent -Djava.compiler = NONE -Xrunjdwp:transport = dt_socket,address = 8989,server = Y,暂停= N` (5认同)

小智 15

至于较新版本的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系统变量.

  • 我试过这个,但是某种安全检查必须阻止我的javaws启动(使用JAVA_TOOL_OPTIONS它不能启动,如果没有它会启动). (3认同)

Mar*_*tel 9

您还可以使用-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
Run Code Online (Sandbox Code Playgroud)