java—使用eclipse远程调试jnlp应用程序

gev0vcfq  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(421)

我正在调试一个jnlp应用程序,以前我可以通过eclipse进行远程调试,但现在不行了。
启动它的命令是:

/usr/java/jdk1.6.0_14/jre/bin/java -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1445 -Djnlpx.heapsize=64m,512m -DtrustProxy=true -Xverify:remote -Djava.security.policy=/lib/security/javaws.policy -Dfile.encoding=UTF-8 -Xbootclasspath/a:/usr/java/jdk1.6.0_14/jre/lib/deploy.jar:/usr/java/jdk1.6.0_14/jre/lib/javaws.jar:/usr/java/jdk1.6.0_14/jre/lib/plugin.jar -classpath /usr/java/jdk1.6.0_14/jre/lib/deploy.jar com.sun.javaws.Main launch.jnlp
Listening for transport dt_socket at address: 1445

问题是,当我附加eclipse调试器时,它会关闭并重新启动;因此调试器附加到第一个进程;当它消失时,调试器也会消失。
调试器脚本实际上并不重要;当suspend=n时,jnlp进程会在调试器启动之前自行重新启动。
我尝试过跟踪它,但是-xx:tracesupport=true选项(以及我尝试过的其他变体)会导致jvm错误。
我正在使用fedora11,eclipsejavaeeide供web开发人员使用(内部版本号:20090621-0832)
我在问是否有人知道如何解决这个问题,或者至少知道如何打开更好的日志记录(即,将所有控制台输出捕获到日志中;这样我就可以看一下屏幕上闪烁一毫秒的第一个控制台)
谢谢!

ia2d9nvy

ia2d9nvy1#

这篇博文中有一些环境变量,可以设置为调试jnlp。这对我来说一直很管用。

set JAVAWS_TRACE_NATIVE=1

  set JAVAWS_VM_ARGS=-Xdebug -Xnoagent -Djava.compiler=NONE 
            -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=y
  javaws http://server:port/descriptor.jnlp
siotufzp

siotufzp2#

我的老板找到了答案:
看来 “<property>” jnlp文件中的标记对于较新的jre更具限制性。根据sun文档:
对于不受信任的应用程序,jnlp文件中设置的系统属性只有在被认为是安全的,或者属性名称以“jnlp.”或“javaws.”开头时,才会由java web start设置
看起来不受信任的状态导致应用程序使用适当的属性再次启动。
在重新编译并修复了一个可能不相关的问题(换行符导致已签名的application.jnlp和launch.jnlp看起来不“相同”)之后,调试器现在可以工作了。

相关问题