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

时间:2009-11-03 19:39:18

标签: java eclipse debugging jnlp

我正在调试一个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错误。

我正在使用Fedora 11,Eclipse Java EE IDE for Web Developers。 (构建ID:20090621-0832)

我问是否有人知道如何解决这个问题,或者至少如何打开更好的日志记录(即将所有控制台输出捕获到日志中;这样我就可以看一下闪烁的第一个控制台在我的屏幕上一毫秒)

谢谢!

2 个答案:

答案 0 :(得分:4)

blog post具有可设置为调试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

答案 1 :(得分:4)

我的老板找到了答案:

  

似乎是“<property>”标签   在jnlp文件中更具限制性   与较新的JRE。根据   Sun documentation

     

“对于不受信任的应用程序,系统   在JNLP文件中设置的属性将   只有Java Web Start才能设置它们   被认为是安全的,或者如果是   属性名称以“jnlp”开头。要么   “javaws的。””

     

看起来像不受信任的状态   导致应用程序启动   第二次用合适的   属性。

重新编译并修复了一个希望无关的问题,其中换行导致签名的APPLICATION.JNLP和launch.jnlp看起来不是“相同”,调试器现在正在工作。