- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们正在使用基于 Web 的 KVM 切换器,它会打开 Java Web Start 启动器以启动控制台。当我使用 Java 6 更新 43 运行它时,一切正常。然后,我在旁边安装了 Java 7 更新 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 dll/工具。如果有人有任何建议,我将不胜感激。我还附上了内部 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 运行脚本并获得以下输出。我是 SO 的新手,所以我不能发布图片。链接在这里。
https://raw.github.com/marvins/temp_images/master/with_setting.png
现在看来问题是因为虚拟机正在调用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"
最佳答案
在仔细研究之后,我卸载了 Java 7,获得了一个可用的配置,用 javaws.exe 复制了 -verbose 的输出,然后将其集成到我的脚本中。最后,我重新安装了所有 Java 版本,现在可以使用了。这是我的脚本。
set JAVA_HOME="C:\Program Files (x86)\Java\jre6"
set CLASSPATH=%JAVA_HOME%\lib\deploy.jar
set BOOTCP=%JAVA_HOME%\lib\javaws.jar;%JAVA_HOME%\lib\deploy.jar;%JAVA_HOME%\lib\plugin.jar
set SECPOL=file:%JAVA_HOME%\lib\security\javaws.policy
set SPLASHPORT="-Djnlpx.splashport=49688"
%JAVA_HOME%\bin\javaw.exe -Xbootclasspath/a:%BOOTCP% -classpath %CLASSPATH% -Djava.security.policy=%SECPOL% -DtrustProxy=true -Xverify:remote -Djnlpx.home=%JAVA_HOME%\bin -Dsun.aws.warmpu=true -Djnlpx.origFilenameArg=C:\opt\kvm\ui.jnlp -Djnlpx.remove=false -Xnoclassgc -XX:PermSize=64m -Xms1028m -Djnlpx.heapsize=1028m,NULL %SPLASHPORT% com.sun.javaws.Main C:\opt\kvm\ui.jnlp
它非常丑陋,但是它的要求是逐字逐句的。我没有意识到所有的 java 工具都只是对 main.js 进行了修改的相同 JVM 调用。现在说得通了,但作为一个 C++ 人,这东西有点神奇。
它仍然没有回答如何仅使用 javaws 自行配置它,但它确实使用它的输出解决了问题。
再次感谢您的帮助。
关于Java Web Start 应用程序适用于 Java 6,但前提是完全卸载 Java 7。 (Win7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15366611/
我是一名优秀的程序员,十分优秀!