我们正在使用基于 Web 的 KVM 切换器,它会打开 Java Web Start 启动器以启动控制台。当我使用 Java 6 更新 43 运行它时,一切正常。然后,我在旁边安装 Java 7 update 17,它得到一个套接字连接错误。我冒昧地编写了一个简单的批处理脚本,它强制选择 Java 主页以及 Web 启动应用程序。然后我保存了下载的 jnlp 文件,以便我可以随意调用它。我绝不是 Java 开发人员,因此对于任何冒犯性的做法,我深表歉意。
set JAVA_HOME="C:\Program Files (x86)\Java\jre6"
%JAVA_HOME%\bin\javaws.exe "C:\opt\kvm\ui.jnlp"
这是我收到的连接异常。
java.io.IOException: JNLP Jar download failure.
at com.sun.javaws.LaunchDownload.validateResults(Unknown Source)
at com.sun.javaws.LaunchDownload.downloadJarFiles(Unknown Source)
at com.sun.javaws.LaunchDownload.downloadEagerorAll(Unknown Source)
at com.sun.javaws.Launcher.downloadResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)'
我想知道您是否知道安装多个 Java 版本时 Java 会有不同行为的任何原因?我能想到的最好的解释是图书馆冲突。如果是这种情况,那么我需要找到一种方法来手动设置库路径,以便只调用 Jre6 dlls/tools。如果有人有任何建议,我将不胜感激。我还附上了内部 jnlp 数据。非常感谢您的宝贵时间。
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File IRP EMS -->
<jnlp
spec="6.0+"
codebase="https://<IP-Address>">
<information>
<title>TrippLite UI</title>
<vendor>TrippLite</vendor>
<homepage href="http://www.tripplite.com"/>
<description kind="short">TrippLite Manager</description>
<icon href="minicom_desktop.gif"/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" initial-heap-size="256m" java-vm-args="-Xnoclassgc - XX:PermSize=64m"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="./boot.jar"/>
<jar href="./app.jar"/>
<jar href="./vendor.jar"/>
<jar href="./miglayout15-swing.jar"/>
<jar href="./jnlp.jar"/>
<jar href="./xstream-1.3.1.jar"/>
<jar href="./xpp3_min-1.1.4c.jar"/>
<nativelib href="./plugin.jar"/>
<property name="devport" value="900"/>
</resources>
<application-desc main-class="com.minicom.app.video.ui.ShowLogin">
</application-desc>
</jnlp>
更新
我使用 -verbose 运行脚本并得到以下输出。我是新来的,所以我不能发布图片。链接在这里。
https://raw.github.com/marvins/temp_images/master/with_setting.png
现在看来问题是因为 vm 正在调用 jre7 的 javaw.exe 文件。你知道我如何覆盖“-Djnlpx.jvm=C:\Program Files (x86)\Java\jre7\bin\javaws.exe 并用 jre6 替换它吗?我正在尝试使用不同形式的“-J- Djnlpx.jvm=" 并且它的外观类似于下面的。它在那里显示它,但不会替换该值。
有没有更合适的方法来强制正确的 javaws?
%JAVA_HOME%\bin\javaws.exe "-J-Djnlpx.jvm=C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -verbose "C:\opt\kvm\ui.jnlp"