如何禁止 JNLP 中的某个 Java 版本?
How to disallow a certain Java version in JNLP?
有时 Java 中存在严重的回归错误,导致我们的产品无法使用。所以我想禁止相关版本,例如当前 8u161 和 8u162(错误 JDK-8195830)。
我如何在 JNLP 中这样做? docs 仅提及 +
作为通配符。那么唯一可能的方法是列出所有其他 Java 版本吗?喜欢
<java version="1.8.0_05"/>
<java version="1.8.0_11"/>
...直到...
<java version="1.8.0_151"/>
<java version="1.8.0_152"/>
?
更新:
所以结果看起来像这样。
<java version="1.8.0_172+ 1.8.0_152 1.8.0_151 1.8.0_144 1.8.0_141 1.8.0_131 1.8.0_121 1.8.0_112 1.8.0_111 1.8.0_102 1.8.0_101 1.8.0_92 1.8.0_91 1.8.0_74 1.8.0_73 1.8.0_72 1.8.0_71 1.8.0_66 1.8.0_65 1.8.0_60 1.8.0_51 1.8.0_45 1.8.0_40 1.8.0_31 1.8.0_25 1.8.0_20 1.8.0_11 1.8.0_05"/>
结论: 最后我决定不在 JNLP 中提供任何版本限制,因为弹出窗口说它建议无论如何都启动应用程序——这与我必须告诉用户什么。
问题似乎是 *racle 似乎已经放弃了对加载和使用早期 JRE 的支持,除了最新的 JRE。
您的方法似乎是唯一的纯 JNLP 方式,此处也是 suggested。
你也可以试着用空格隔开一大行来写。我唯一要更改的是顺序,以便最高的是顶部。
"If several JREs are specified, this indicates a prioritized list of
the supported JREs, with the most preferred version first."
您可能想查看已发布的类似问题here
排除特定 java 版本的另一种方法是在您的应用程序中检查它。
public static void main(String [] args) {
String version = System.getProperty("java.version");
if("1.8.0_161".equals(version) || "1.8.0_162".equals(version){
//print an error dialog
}
else{
//continue normal flow
}
}
在之前的应用程序中,我什至走得更远,有两个不同的 Web 应用程序:一个 "light" Web 应用程序在实际应用程序之前启动。这个轻型 Web 应用程序几乎没有关于 java 版本的要求(甚至从 1.4 开始),然后它会检查所有必要的要求(Java 版本,OS,RAM,CPU, 文件 ...).一切顺利后才开始实际应用。
有时 Java 中存在严重的回归错误,导致我们的产品无法使用。所以我想禁止相关版本,例如当前 8u161 和 8u162(错误 JDK-8195830)。
我如何在 JNLP 中这样做? docs 仅提及 +
作为通配符。那么唯一可能的方法是列出所有其他 Java 版本吗?喜欢
<java version="1.8.0_05"/>
<java version="1.8.0_11"/>
...直到...
<java version="1.8.0_151"/>
<java version="1.8.0_152"/>
?
更新: 所以结果看起来像这样。
<java version="1.8.0_172+ 1.8.0_152 1.8.0_151 1.8.0_144 1.8.0_141 1.8.0_131 1.8.0_121 1.8.0_112 1.8.0_111 1.8.0_102 1.8.0_101 1.8.0_92 1.8.0_91 1.8.0_74 1.8.0_73 1.8.0_72 1.8.0_71 1.8.0_66 1.8.0_65 1.8.0_60 1.8.0_51 1.8.0_45 1.8.0_40 1.8.0_31 1.8.0_25 1.8.0_20 1.8.0_11 1.8.0_05"/>
结论: 最后我决定不在 JNLP 中提供任何版本限制,因为弹出窗口说它建议无论如何都启动应用程序——这与我必须告诉用户什么。
问题似乎是 *racle 似乎已经放弃了对加载和使用早期 JRE 的支持,除了最新的 JRE。 您的方法似乎是唯一的纯 JNLP 方式,此处也是 suggested。
你也可以试着用空格隔开一大行来写。我唯一要更改的是顺序,以便最高的是顶部。
"If several JREs are specified, this indicates a prioritized list of the supported JREs, with the most preferred version first."
您可能想查看已发布的类似问题here
排除特定 java 版本的另一种方法是在您的应用程序中检查它。
public static void main(String [] args) {
String version = System.getProperty("java.version");
if("1.8.0_161".equals(version) || "1.8.0_162".equals(version){
//print an error dialog
}
else{
//continue normal flow
}
}
在之前的应用程序中,我什至走得更远,有两个不同的 Web 应用程序:一个 "light" Web 应用程序在实际应用程序之前启动。这个轻型 Web 应用程序几乎没有关于 java 版本的要求(甚至从 1.4 开始),然后它会检查所有必要的要求(Java 版本,OS,RAM,CPU, 文件 ...).一切顺利后才开始实际应用。