为什么桌面 Java 应用程序使用旧的 JRE?

为什么桌面 Java 应用程序使用旧的 JRE?

为了遵守 IT 政策,我(我认为)从 OSX 中删除了所有旧版本的 Java JRE 和 JDK。java -version返回 1.7.0_51,并且系统设置中的 Java 控制面板也报告版本 1.7.0_51。

然而,当我打开应用程序 DeltaWalker 时,它会发送一个 HTTP 请求来检查新版本,并包含标头User-Agent: Java/1.7.0_40,这当然会触发我们组织的漏洞检测系统。

  1. 为什么 DeltaWalker 不使用最新版本?
  2. 我如何才能找出像这样的应用程序或 Eclipse/PhpStorm 正在使用的 JRE?
  3. 我如何追踪这个较旧的 JRE,删除它会破坏这些应用程序吗?

答案1

正如@Keltari 提到的,许多应用程序将其自己的 Java 版本与应用程序捆绑在一起,因为这样可以避免依赖于他们一无所知的已安装的 Java。

您可以在 Finder 中打开 DeltaWalker 应用程序来查看此处发生的情况。(我使用 DeltaWalker 的新副本执行了此操作药物,但您的应该相同)。找到 DeltaWalker“应用程序”,按住 Ctrl 键单击或右键单击它,然后选择“显示包内容”。导航到以Contents\PlugIns\jre\Contents\Home\查看应用程序正在使用的 Java 版本。您可以在终端窗口中转到此路径,进入文件bin夹,然后运行java -version以确认它与您在用户代理中看到的版本相同。(我自己无法检查这一点,因为我实际上是在 Windows 计算机上使用 7-zip 来拆解应用程序。)

理论上可以将这个 Java 版本替换为较新的版本,但考虑到应用程序组件之间的联系可能非常紧密,并且 DeltaWalker 还捆绑了许多其他依赖项(辅助可执行文件和 JAR 插件),这些依赖项也可能存在问题,因此我会犹豫是否这样做。

如果您使用的不是最新版本的应用程序,则应尽可能更新它。如果您无法更新,或者最新版本仍然太旧,则应联系Deltopia 支持

答案2

我不知道您的应用程序或 Mac,但我确信它与 Windows 类似。

某些应用程序会在安装时包含自己的 Java 版本。通常,这样做是因为他们尚未使用较新版本的 Java 进行测试,因此无法保证其应用程序可与较新版本兼容。或者,他们的应用程序可能与较新版本的 Java 不兼容。

检查启动您应用的程序,看看它是否专门启动了旧版本。您可以尝试删除该启动器或对其进行编辑,以便它使用最新版本,但这可能会破坏应用。

我会查看您的应用支持论坛以获取更多信息。

相关内容