我知道我可以试远程Java VM与食,但我怎么可以做一个Java网启动程序。我有一个问题,不仅发生在Java网络的开始。它必须是安全有关。

我需要一个解决方案,将工作与目前的Java VM像1.6.0_12.

有帮助吗?

解决方案

这是很喜欢和你想远程调试任何其他Java程序是相同的:你必须设置一些参数的VM(-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=12345 ),然后连接到指定的端口。在Java Webstart的6.0这可能与-J选项通过环境变量JAVAWS_VM_ARGS来完成,在早期版本。查看详情这里

其他提示

手动启动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

至于爪哇的较新版本(爪哇8u20 +和Java 7u70 +)1经历了象-Xrunjdwp参数不能直接使用也没有传递JAVAWS_VM_ARGS。 信息 Rejecting attempt to specify insecure property: -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 开始在控制台输出中显示。

这对于我工作的唯一的解决办法是通过这些参数到JAVA_TOOL_OPTIONS系统变量。

您也可以使用-J选项提供调试参数到javaws的可执行

示例:

javaws.exe -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 http://server:port/descriptor.jnlp

你会需要做到以下几点:

  1. 使Java记录和跟踪在Java控制面板>高级。Java Control Panel: logs and tracing

  2. 启用参数的调试Java(可选项,但即有用的问题tls/ssl handshake作为添或handshake_failure)&启动JNLP,有两种方法可以做到这一点:

    2.a.下载JNLP文件和执行其命令行(的 SET 命令不需要在此特定情况下)。

    set JAVA_TOOL_OPTIONS=-Djavax.net.debug=all
    javaws -wait jnlp.jnlp
    

    2.b.添加参数(即 -Djavax.net.debug=all)JVM Java控制面板中的>Java>查(这是不需要在这个特定),并推出JNLP文件从浏览器:

    Java Control Panel: jvm arguments

  3. 该日志和跟踪位于 log 目录 Java部署的家庭 从那里我粘贴这些地点:

    a.Windows XP: %HOME%\Application Data\Sun\Java\Deployment

    b.Windows7/Vista: %APPDATA%\..\LocalLow\Sun\Java\Deployment

    c.Linux/Solaris: %HOME%/.java/deployment

与内网。debug=所有,你会看到的握手的如果的罐子里面的jnlp载从一个https connection.这类问题是很难调试。

...
%% 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:

使用的Java 8和Windows 10,打开命令提示符(cmd.exe的)和输入:

set JAVAWS_TRACE_NATIVE=1
set JAVA_TOOL_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
javaws java-app.jnlp

你试过打印调试日志?这是一个有用的东西有无论如何,在这种情况下可能会有所帮助。

如果你想真正的调试,例如见这里: 我怎么能下Webstart的?

调试

要调试Web在Linux上启动应用,创建一个外壳脚本〜/ bin中/与在调试模式下的javaws调用javaws-debug.sh如上所述:

〜/斌/ javaws-debug.sh:

#!/bin/sh
export JAVAWS_TRACE_NATIVE=1
export JAVAWS_VM_ARGS="-Xdebug -Xnoagent -Djava.compiler=NONE 
  -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=n"
javaws "$@"

然后,在你的浏览器中,选择脚本的应用程序来调用JNLP文件。

例如,在Firefox中,去编辑→首选项→应用程序,内容类型:Java Web Start的,并选择“使用其他”行动和“选择帮助应用程序”对话框中挑剧本。在Chrome中,你需要修改Linux系统设置。在KDE,进入系统设置→文件关联,已知类型:应用程序:X-java的JNLP文件,从应用程序/ x-java的“选择应用程序中添加新的应用程序,挑〜/斌/ javaws-debug.sh -jnlp文件”对话框。

在您的浏览器配置,Java Web Start应用将开始使用你的包装,这将使调试器端口连接8989

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top