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
1.日志和跟踪位于Java部署主目录的log目录中,我将从该目录粘贴以下位置: a. windows XP:%HOME%\Application Data\Sun\Java\Deployment b. Windows 7/Vista操作系统:%APPDATA%\..\LocalLow\Sun\Java\Deployment c. Linux/Solaris操作系统:%HOME%/.java/deployment 使用javax. net. debug = all,如果JNLP内部的jar是从https连接加载的,你会看到握手,这类问题很难调试。
...
%% No cached client session
*** ClientHello, TLSv1.2
...
***
...
Java Web Start Main Thread, received EOFException: error
Java Web Start Main Thread, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
Java Web Start Main Thread, SEND TLSv1.2 ALERT: fatal, description = handshake_failure
Java Web Start Main Thread, WRITE: TLSv1.2 Alert, length = 2
Java Web Start Main Thread, called closeSocket()
#### Java Web Start Error:
然后,在浏览器中,选择该脚本作为对JNLP文件调用的应用程序。 例如,在Firefox中,转到编辑→首选项→应用程序,内容类型:Java Web Start,在操作中选择“使用其他”,然后从“选择助手应用程序”对话框中选择脚本。在Chrome中,您需要更改Linux系统设置。在KDE中,进入系统设置→文件关联,已知类型:应用程序:x-java-jnlp-file,添加新应用程序,javaws-debug.sh从“为应用程序/x-java-jnlp-file选择应用程序”对话框中选择~/bin/ www.example.com。 配置浏览器后,Java Web Start应用程序将使用 Package 启动,这将使调试器能够连接到端口8989。
9条答案
按热度按时间2admgd591#
这与您希望远程调试的任何其他Java进程非常相似:您必须为VM(
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345
)设置一些参数,然后连接到给定的端口。在Java webstart 6.0中,这可以通过-J选项来完成,在早期版本中,通过环境变量JAVAWS_VM_ARGS来完成。ohfgkhjo2#
手动启动JWS VM。通过这种方式,您可以提供启动参数以打开调试端口。下面是一个description,它如下所示:
vulvrdjw3#
至于较新版本的Java(Java 8 u20+和Java 7 u 70+),我遇到了像-Xrunjdwp这样的参数不能直接传递,也不能使用JAVAWS_VM_ARGS。消息
Rejecting attempt to specify insecure property: -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
开始显示在控制台输出中。唯一对我有效的解决方案是将这些参数传递到JAVA_TOOL_OPTIONS系统变量中。
zy1mlcev4#
还可以使用-J选项为javaws可执行文件提供debug参数
示例:
cu6pst1q5#
您将需要执行以下操作:
1.在Java控制面板〉高级中启用Java日志和跟踪。
1.启用调试Java的参数(可选但有用,例如,tls/ssl握手的问题,如close_notify或handshake_failure)&启动JNLP,有两种方法可以做到这一点:
2.a.下载JNLP文件并从命令行执行它(在此特定情况下不需要
SET
命令)。2.b.在Java控制面板〉Java〉视图中为JVM添加参数(即
-Djavax.net.debug=all
)(在此特定情况下不需要),并从浏览器启动JNLP文件:1.日志和跟踪位于Java部署主目录的
log
目录中,我将从该目录粘贴以下位置:a. windows XP:
%HOME%\Application Data\Sun\Java\Deployment
b. Windows 7/Vista操作系统:
%APPDATA%\..\LocalLow\Sun\Java\Deployment
c. Linux/Solaris操作系统:
%HOME%/.java/deployment
使用javax. net. debug = all,如果JNLP内部的jar是从https连接加载的,你会看到握手,这类问题很难调试。
yacmzcpb6#
可以在启用调试的情况下运行JNLP:
输出:侦听传输dt_socket地址:小行星50
使用您最喜欢的IDE附加到该进程,我使用IntelliJ IDEA运行〉附加到进程
11dmarpk7#
使用Java 8和Windows 10,打开命令提示符(cmd.exe)并键入以下内容:
之后,在Eclipse(或另一个IDE)中启动正常的远程Java应用程序调试,设置为上面命令中使用的端口(本例中为
8000
)jhiyze9q8#
要在Linux中调试Web Start应用程序,请创建一个shell脚本~/bin/javaws-debug.sh,其中javaws调用处于调试模式,如上所述:
~/binjavaws-debug.sh:
然后,在浏览器中,选择该脚本作为对JNLP文件调用的应用程序。
例如,在Firefox中,转到编辑→首选项→应用程序,内容类型:Java Web Start,在操作中选择“使用其他”,然后从“选择助手应用程序”对话框中选择脚本。在Chrome中,您需要更改Linux系统设置。在KDE中,进入系统设置→文件关联,已知类型:应用程序:x-java-jnlp-file,添加新应用程序,javaws-debug.sh从“为应用程序/x-java-jnlp-file选择应用程序”对话框中选择~/bin/ www.example.com。
配置浏览器后,Java Web Start应用程序将使用 Package 启动,这将使调试器能够连接到端口8989。
2mbi3lxu9#
你试过打印一个调试日志吗?无论如何,这是一个有用的东西,在这种情况下可能会有帮助。
如果你想要真实的的调试,请看例如这里:如何在WebStart下进行调试?