2009-11-03 111 views
8

我正在调试jnlp应用程序,并且以前可以通过eclipse远程调试它,但现在不再了。使用eclipse远程调试jnlp应用程序

命令来启动它是:

/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错误。

我使用的是针对Web开发人员的Eclipse Java EE IDE。 (内部编号:20090621-0832)

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

谢谢!

回答

4

我的老板找到了答案:

看来,“<property>”标签 在JNLP文件更为严格 与新的JRE。按照 Sun documentation

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

看起来不信任状态 导致发动 第二次用适当的 性质的应用程序。

重新编译和固定在那里换行是导致签署APPLICATION.JNLP和launch.jnlp不似乎是“相同的”一个希望无关的问题后,调试器现在工作。

+1

太棒了!您的评论帮助我找到自己的问题。它看起来像JNLP被下载或解析两次,这取决于不可信的状态。第二次使用的参数是在中设置的参数。所以我需要在HREF中添加所有的请求参数,并且它终于可以工作了。谢谢。 – Kloe2378231 2016-07-20 11:39:13

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 
+0

我发现一个已经和尝试了一些标志; 我会继续努力让人们知道结果;今天早上我发现这篇文章(http://forums.sun.com/thread.jspa?threadID=569693),我会继续阻止。 – 2009-11-04 13:11:10

+0

我也只是发现这个职位:http://stackoverflow.com/questions/686061/how-can-i-debug-applications-under-java-web-start-jnlp – 2009-11-04 13:15:41