我有一个没有连接到互联网的 Linux 盒子。
我已经安装在上面了Firefox 24.0
and jre1.7.0_40
(并且1.7.0_17
)
当我使用本地安装在盒子上的 Web 应用程序启动 FF 时,我收到一个警告弹出窗口:
需要 Java 更新;您的 Java 版本已过时
我不明白 Java 如何知道它“过时”了???
什么与什么相比?
我假设检查 oracle.com 上的可用版本,如果系统上安装的当前版本太旧,则删除此警告。
或者启动的应用程序本身携带一些有关 Java 版本的信息,哪些版本可用或在编译时使用了什么?
里面有一个解释1.7.0u10 发行说明 http://www.oracle.com/technetwork/java/javase/7u10-relnotes-1880995.html.
JRE 依赖于 Oracle 服务器的定期检查来确定
如果它(JRE)仍然被认为是最新的所有可用的
安全修复(高于安全基线)。过去,如果JRE
无法联系 Oracle 服务器,它的行为继续如下
尽管它仍然是安全方面的最新版本,
无限期。
为了避免这个问题,有一个辅助机制,不依赖于
外部通信,已经添加到JDK 7u10中。由此
从版本开始,所有 JRE 都将包含硬编码的到期日期。
到期日期计算为预定发布后结束
下一个重要补丁更新。
在线检查的数据来自https://javadl-esd-secure.oracle.com/update/baseline.version https://javadl-esd-secure.oracle.com/update/baseline.version, 我相信。
JRE 中硬编码的到期日期和版本存储在BuiltInProperties.class
位于deploy.jar中
对于 1.7.0u45,我们有
public static final boolean JRE_BASELINE_CHECKS_ENABLED = true;
public static final String JRE_EXPIRATION_DATE = "02/14/2014";
public static final String BASELINE_VERSION_131 = "1.3.1_21";
public static final String BASELINE_VERSION_142 = "1.4.2_43";
public static final String BASELINE_VERSION_150 = "1.5.0_55";
public static final String BASELINE_VERSION_160 = "1.6.0_65";
public static final String BASELINE_VERSION_170 = "1.7.0_45";
public static final String BASELINE_VERSION_180 = "1.8.0";
public static final String CURRENT_VERSION = "1.7.0_45";
public static final String CURRENT_NODOT_VERSION = "170";
public static final String DEPLOY_VERSION = "10.45.2.18";
public static final String DEPLOY_NOBUILD_VERSION = "10.45.2";
public static final String DEPLOY_NODOT_VERSION = "10452";
public static final String JAVAWS_NAME = "javaws-10.45.2.18";
public static final String JAVAWS_VERSION = "10.45.2.18";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)