【问题标题】:Possible to auto update JRE_HOME when java is updated?java更新时可以自动更新JRE_HOME吗?
【发布时间】:2018-04-24 22:53:17
【问题描述】:

我花了一点时间才弄清楚为什么我的 solr 服务器不会再次启动。显然 Java 已经更新了,但我没有意识到(尽管我完全有可能对对话说好的并忘记了它)。即使我意识到了这一点,我也不会马上知道我需要更新 JRE_HOME 环境变量才能让 tomcat 启动备份。

这是在开发机器上,所以除了令人沮丧之外没什么大不了的。但现在我担心如何在生产中处理这个问题。如果我更新 Java,我是否只需要记住更新环境变量,或者有什么方法可以自动保持同步?

【问题讨论】:

  • 您使用的是什么操作系统? Java是如何安装的?哪一个(OpenJDK?Oracle?)Solr 是如何安装的?
  • @StephenC 微软和甲骨文。不知道如何回答最后一个问题......我所知道的只是在开发机器上我从命令提示符开始,但在服务器上它是作为服务安装的。
  • 也就是说,我从 dev 机器上的命令提示符启动 tomcat 服务器(显然不是 java),它是 prod 机器上的服务。

标签: java apache tomcat solr


【解决方案1】:

简单的答案是否定的。Java 更新不会也不能1自动更新 JAVA_HOME。

请注意,此类问题也会影响在 Windows 上运行的其他基于 Java 的服务。谷歌windows server java update breaks java_home


为了记录,现代 Linux 系统使用“替代”系统来优雅地处理 Java 版本切换。像 Tomcat 这样的服务不依赖于单个系统范围的 JAVA_HOME 变量。相反,典型的服务有一个配置文件,其中包含用于该服务的 JAVA_HOME。

您可以研究 Linux 是如何做这些事情的,以了解如何避免被 Windows 上的 Java 更新烧毁。但这可能比付出的努力更多。其他方法是:

  • 在您的 Windows 生产服务器上使用某种配置管理系统来避免不受控制的更新
  • 在启用/使用自动更新时要更加小心。

1 ...因为没有“正确的方法”适用于 Windows 机器上的所有 Java 用途。

【讨论】:

  • 好吧,这就是我的想法,但认为值得一问。真正让我烦恼的一件事是,当它安装更新时,它会删除旧版本。为什么它不能同时保留两者,如果我的产品对旧产品有硬性参考,它们就不应该损坏?当然,我知道 Java 不能很好地并行处理(是的,我知道它可以支持它,但它很麻烦)。也许 Java 在其他操作系统上运行得更好,但在 Windows 中,我一次又一次地对它感到失望。也就是说,我的失望从来都不是用 Java 编写的产品,而是 Java 本身。
  • 是的……嗯……Java 在 Linux 上运行得更好的原因之一是 Linux 发行版维护者在确保集成相对无缝方面发挥了重要作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2014-03-28
  • 1970-01-01
  • 2015-08-15
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多