【问题标题】:JNLP should use a specific Java version but error resultsJNLP 应该使用特定的 Java 版本但错误结果
【发布时间】:2012-04-16 13:52:34
【问题描述】:

我在这里遇到了问题。我想使用一个特殊版本来运行我们的 java webstart 应用程序,但只用于一个 jnlp。 (“它已经过测试,......blabla我们不能使用新版本......blabla”随机风袋)

所以我尝试像这样配置我们的 JNLP:

<resources>
    <j2se version="1.6.0_29" href="http://java.oracle.com/products/autodl/j2se"/>
    ...
</resources>

当我现在启动这个 jnlp 时,即使安装了正确的 Java,我也会收到以下错误:

错误: 应用程序请求了当前未在本地安装的 JRE 版本(版本 1.6.0_29)。 Java Web Start 无法自动下载和安装请求的版本。此 JRE 必须手动安装。

更新

JNLP File Syntax 允许使用特定的 Java 版本,例如 1.6.0_29。我什至用 1.6.0_29-b11 尝试过 - 仍然是同样的错误。

确切的产品版本(实施版本)也可能是 指定的。通过包含 href 属性。例如,1.3.1_07, Sun Microsystems, Inc. 的 1.4.2 或 1.5.0-beta2。例如,

或

编辑

给定的答案没有帮助,也不是正确的答案。

【问题讨论】:

  • 还要确保使用JaNeLA 验证JNLP。
  • I had a similar issue recently 这是由于混合了 32 位和 64 位版本的 JRE。您的问题可能无关紧要。
  • @assylias “可能不相关” 应该是“可能相关”的 IMO,但很好。 +1
  • 如果您按照我编辑的答案中的步骤操作,您可以自动下载并安装 1.6.0_29。
  • 请注意,Oracle 在 2013 年从 Web Start 中删除了 JRE 自动下载功能:openjdk bug 8006701。 Web Start 现在经常(但不总是)默默地忽略版本规范。

标签: java jnlp java-web-start


【解决方案1】:

这很常见。确保每台客户端机器都为 JNLP/Webstart 启用了 1.6.0_29。

安装 1.6.0_29 不一定足以告诉 webstart 它可用。更多信息请见this post

【讨论】:

  • 不,这不是解决方案。这适用于像1.5* 这样的通配符版本。
【解决方案2】:

我已经安装了 Java 1.6.0_21,并在 Java 控制面板中启用了它。但是,我收到了与问题中所述相同的错误消息:“应用程序已请求当前未在本地安装的 JRE 版本(版本 1.6.0_29)”

即使我尝试在 JNLP 中使用不同的行,我也会收到此消息,例如:

<j2se version="1.6.0_29"/>

或

<j2se version="1.6.0_29-b06"/>

我通过使用以下行编辑 JNLP 文件解决了这个问题:

<j2se version="1.6"/>

因此文档行“也可以指定确切的产品版本(实施版本)”似乎是错误的。

【讨论】:

  • 我不认为你已经解决了你的问题,因为你已经在使用 1.6.0_21 并且通过引用 1.6 你的 jws 应用程序正在使用你手动安装的 1.6.0_21。
【解决方案3】:

你使用:

jnlp spec="1.0+"

如果是这样,您应该尝试:

jnlp spec="6.0+"

我找到了这个link,可能是你的浏览器/JRE的配置有问题,或者你在代理下?

【讨论】:

  • 好吧,我明白了,我放弃了这部分。我认为 OP 问题出在浏览器或 JRE 的配置上,看看给定的链接,这是 IBM 提供的解决方案。这是关于 IBM 系统总监的,但也许它可以提供想法 :)
  • 在上面给出的链接中:That属于---"如果更多信息窗口显示以下错误消息,则问题是由于JRE设置不允许将临时Internet文件保存在计算机。必须为 nativelib 或 installer-desc 支持启用缓存。"
【解决方案4】:

疑难解答:

  • 检查当前分配给 IDE 项目构建路径的版本
  • 确保在客户端计算机上安装了j2se version="1.6.0_29" 中指定的版本。
  • 检查您的计算机,看看您当前是否没有安装任何其他可能导致依赖冲突的版本。
  • 检查您的类路径设置以查看当前默认设置的版本。这可能是正确的版本吗?

还要注意:

j2se 元素指定 Java 2 SE 运行时环境 (JRE) 支持应用程序的版本,以及标准 Java 虚拟机的参数。

因此,如果您希望将应用程序发布到某些特定版本,则应列出所有支持的版本。示例:

   <j2se version="1.3" initial-heap-size="64m"/>
   <j2se version="1.4+"/>

在您的情况下,您指定了 href 属性,强制 Java Web Start 不将已安装的非 FCS(即里程碑)JRE 视为匹配项。

按照惯例,如果在 版本字符串。所以不会考虑安装 1.4.1-ea 或 1.4.2-beta JRE 作为请求的匹配项。

已编辑。

【讨论】:

  • 您写道:“确保安装了 j2se version="1.6.0_29" 中指定的版本。??? 如果您告诉您的客户手动下载和安装,则无需下载相同的版本自动版本。
  • 查看已编辑。如果您指定j2se version,则假设客户端在他/她的机器上具有指定的版本之一,否则将导致报告的错误。
  • 这不是真的。错误是尝试指向“java.sun.com/products/autodl/j2se”中不可用的下载版本时导致的结果
  • 不,这是不正确的,使用 href 属性会强制 Java Web Start 不将已安装的非 FCS(即里程碑)JRE 视为匹配项。它不指向下载版本。
  • 查看错误:“错误:应用程序请求了当前未在本地安装的 JRE 版本(版本 1.6.0_29)。 Java Web Start 无法自动下载并安装请求的版本。此 JRE 必须手动安装。”这意味着“不在服务器下载端本地”。否则没有任何意义。只有当用户端没有这样的版本时,下载一个版本才有意义。
【解决方案5】:

从 java.sun.com 自动下载软件

试试这个网址

j2se version="1.6.0_05+" href="http://java.sun.com/products/autodl/j2se"/>

如果客户端计算机上安装了更高版本,则将使用最新版本。

或

j2se version="1.6.0_05" href="http://java.sun.com/products/autodl/j2se"/>

然后您将被提示准确安装 1.6.0_05。

调用 ?.jnlp 时将使用 1.6.0_05 版本。

小心;以上仅在安装了更高版本时才有效,例如 1.6.0_29 运行 1.6.0_05 作为孩子。

在 Java 控制台中,您将看到:

JavaPlug-in 1.6.0_31
Using JRE-Version 1.6.0_05 Java Hot Spot(TM) Client VM

如果您确实要下载“当前可自动下载的软件包”中未列出的版本,那么您可以下载指定版本 1.6.0_29,前提是您有 高于 1.6.0_29 的版本(可能是 1.6.0_31)在客户端浏览器中启用插件。测试安装 1.6.0_31 并查看是否为示例:Firefox 插件 1.6.0_31 是否存在并已启用。然后客户端就可以通过*.jnlp自动下载安装1.6.0_29了。

在客户端浏览器中调用您的应用程序。出现警告:“安装较低版本 1.6.0_29”和“证书警告”单击是。安装 1.6.0_29 开始。

下载后浏览器重启,插件 1.6.0_31 不见了!!!所以 浏览器重定向到 Oracle 下载端,您必须再次安装 1.6.0_31。下载开始到您指定的文件夹。运行启动更新的文件“jxpinstall.exe”;提示再次安装问题;是(必须关闭所有浏览器)安装开始;看看额外的插件,1.6.0_31 插件又回来了。现在您可以将 *.jnlp 应用程序与 1.6.0_29 一起使用。真的很多工作:-)

注意:您将无法使用“jdk-6u31-windows-i586.exe”之类的文件再次安装浏览器插件,您必须按照上述步骤操作。你会得到一个正确的文件“jxpinstall.exe”。


java.sun.com 自动下载功能简化了 Java Web Start 部署,因为它使常用软件可以随时与 Java Web Start 一起使用。通常,只需将额外的一行添加到 JNLP 文件即可利用此功能。 ...

目前可自动下载的软件包有:

Java 2 Runtime Environment 1.3.0_02 for Windows/i586, Linux/i586, and Solaris/SPARC
.....
Java 2 Runtime Environment 1.4.2_16 for Windows/i586, Linux/i586, and Solaris/SPARC
Java Runtime Environment 1.5.0_02 for Windows/i586, Linux/i586, and Solaris/SPARC
.....    
Java Runtime Environment 1.5.0_14 for Windows/i586, Linux/i586, and Solaris/SPARC
Java Runtime Environment 1.6.0 for Windows/i586, Linux/i586, and Solaris/SPARC
Java Runtime Environment 1.6.0_04 for Windows/i586, Linux/i586, and Solaris/SPARC
Java Runtime Environment 1.6.0_05 for Windows/i586, Linux/i586, and Solaris/SPARC

available packages look here

【讨论】:

  • 明天我会在工作中尝试它——但如果它真的使用当前/最高版本,那么这不是我需要的。它应该使用我在 jnlp 文件中定义的特定版本。
  • 小心;以上仅在安装了更高版本时才有效,例如 1.6.0_29 运行 1.6.0_05 作为孩子。
【解决方案6】:

这是该死的 java 版本,使用较低版本可以解决问题。我使用了 Java 1.8.0_05-b13 Java HotSpot(TM) 64-Bit Server VM,并成功通过。

【讨论】:

    猜你喜欢
    • 2014-12-24
    • 2019-03-22
    • 2022-01-17
    • 2019-10-19
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    相关资源
    最近更新 更多