【问题标题】:How to update java console JRE?如何更新 Java 控制台 JRE?
【发布时间】:2017-05-17 20:06:30
【问题描述】:

我正在尝试运行 java 应用程序 (jnlp),但问题是当我启动此应用程序时,它会尝试使用 JRE 版本 1.8.0_121-b13。如何将此 java 版本更改为 java 1.6?

Java Web Start 11.121.2.13 x86
Using JRE version 1.8.0_121-b13 Java HotSpot(TM) Client VM
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
m:   print memory usage
....

用户和系统 JRE 版本都是 1.6

当我下载这个 jar 文件并尝试使用命令运行时

java -jar sample.jar

从控制台,系统使用 java 1.6 运行此应用程序。

编辑:

输出

java -version

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

我的 jnlp 文件;

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="***mysite***"  href="sample.jnlp">

<information>
    <title>Sample jnlp</title>        
    <offline-allowed/>
</information>


<security>
    <all-permissions />
</security>

<resources>
    <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se" />
    <jar href="sample.jar" main="true" />
    <property name="jnlp.packEnabled" value="true" />
</resources>

<application-desc name="sample" main-class="com.test.main">
</application-desc>

<update check="always" policy="always"/>

</jnlp>

【问题讨论】:

  • 我不明白你的最后一句话。你是说:当你在命令行手动调用java时,你知道如何选择java 1.6吗?
  • @GhostCat 不,我的意思是当我使用 java 1.6 从命令行系统运行此 jar 文件以按预期运行此应用程序时。但是为什么当我尝试从 web 运行这个应用程序时它会尝试使用 java 1.8?另请参阅我的编辑
  • 您的应用服务器使用的是什么Java版本,请先查看
  • @murthy 它也在使用java 1.6
  • 如果可以的话,能不能把那个sn-p的日志贴一下,好像有什么可疑的地方

标签: java jnlp


【解决方案1】:

问题很可能是应用程序的 JNLP 文件(请参阅http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html#example指定应用程序需要 Java 8 或更高版本。如果您设法让应用程序启动器使用 Java 6,那么应用程序可能会失败,因为它依赖于 Java 8 库。

您需要安装 Java 8 JRE:

  • 让应用程序运行1,并且
  • 因为 Java 6 已经结束生命周期并且不再获得安全补丁。

(就像 WindowsXP 不是:https://en.wikipedia.org/wiki/WannaCry_ransomware_attack_


更新 - 尝试强制 JNLP 使用特定版本的 Java;例如替换

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

<j2se version="1.6" href="http://java.sun.com/products/autodl/j2se" />

我怀疑可能是 javaws 本身试图阻止您意外使用已弃用/不安全的 Java 版本。


1 - 好的,您的 cmets 建议如果您从命令行运行该应用程序,它将使用 Java 6 运行。在这种情况下,该网站上的 JNLP 配置指定 Java 8 的可能原因是,他们正在向您发送一个您应该更新的强烈信息。使用 JNLP 启动和 Java 6 存在安全风险,除非您从 Oracle 购买 Java 6 支持合同,并且定期修补 JRE。

【讨论】:

  • 我添加了我的 jnlp 文件。问题是我手动创建了这个 jnlp 文件,但我没有指定使用 java 1.8。
  • 还是不行。我已经删除了 java 1.8(jre 1.8 32 位),然后当我再次尝试启动 jnlp(和任何 jar 文件)时,它显示“你想如何打开这个文件”对话框。问题是我还有 java 1.8(jre 1.8 64 bit) 和 java 1.6(jdk 1.6 64 bit)。
  • 我认为您的问题表明您想要使用 Java 6。如果您(现在)想要使用 Java 8,那么我建议:1)卸载所有 JDK 和 JRE (不要只删除目录...),2)仅安装 Java 8(JDK 或 JRE),3)将 JNLP 文件更改为 version=1.8+
  • Java 在 Windows 上的问题在于 Java 和注册表存在一些不透明的东西。 (我避开 Windows 的众多原因之一......)
  • @AndrewThompson - 它可能隐藏在发行说明中。
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
相关资源
最近更新 更多