gpt4 book ai didi

java - 使用现有的 JRE x86 和 x64 安装启动 JNLP 应用程序?

转载 作者:行者123 更新时间:2023-11-30 08:34:47 26 4
gpt4 key购买 nike

我们的客户部分并行安装了 JRE x86 和 x64。 JNLP 在 Windows 上默认在 HKEY Classes Root JNLPFile 上启动。但是,这会显示 x86 或 x64 路径。

如果是x86应用程序,应用程序是用x64 javaws启动的,控制x64 javaws webstart到x86路径的变化?

属性“arch”无效,应用程序在启动时崩溃。

最佳答案

Java 8u102 引入了一个 bug在 Java Web Start 中,当同时安装了 64 位和 32 位 JRE/JDK 并且应用程序需要针对 32/64 位的不同 JAR(在我们的例子中,它是一个 SWT 应用程序,需要不同的 swt.jar对于每个拱门)。

看来您可以通过在 jnlp.conf 中首先指定 64 位资源来解决此错误。例如:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:///c:/jnlp" href="demo.jnlp">
<information>
<title>Demo</title>
</information>
<security>
<all-permissions/>
</security>

<resources>
<j2se version="1.8+"/>
<jar href="demo.jar" />
</resources>
<resources os="Windows" arch="amd64">
<jar href="win64/swt.jar"/>
</resources>
<resources os="Windows" arch="x86">
<jar href="win32/swt.jar"/>
</resources>

<application-desc main-class="package.to.MainClass"/>
</jnlp>

关键是 arch="amd64" 的资源出现在 arch="x86"

的资源之前

如果您的应用程序只能在 32 位上运行并且根本不应该在 64 位 JRE 上运行,您可以通过为 64- 指定无效的 j2se 版本来强制 javaws 使用 32 位 JRE位(在本例中为 1.0.0,请注意需要在特定于 arch 的资源部分中指定 j2se 版本才能使其正常工作)。

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:///c:/jnlp" href="demo.jnlp">
<information>
<title>Demo</title>
</information>
<security>
<all-permissions/>
</security>

<resources>
<jar href="demo.jar" />
</resources>
<resources os="Windows" arch="amd64">
<j2se version="1.0.0"/>
</resources>
<resources os="Windows" arch="x86">
<j2se version="1.8+"/>
<jar href="win32/swt.jar"/>
</resources>

<application-desc main-class="package.to.MainClass"/>
</jnlp>

关于java - 使用现有的 JRE x86 和 x64 安装启动 JNLP 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38629737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com