使用定制的MSI更新Web应用程序堆栈后,Java JRE损坏

我们有一个安装在Windows环境中的Java Web应用程序。 我们使用先进的安装程序,一个商业产品,build立MSI。 安装程序将安装Tomcat 7,Apache 2.0并部署我们的应用程序代码。

在升级期间,更新tomcat文件并重新安装tomcat服务。 我们得到一个说明,并不是所有的文件都可以安装,因此安装后需要重新启动。

如果我们忽略重启提示符,一切都完美无瑕。 但是,一旦计算机重新启动,Java不再起作用,并且Apache Tomcat Windows服务不能启动。 即使在JRE bin目录中运行“java”或“java -version”也会导致以下错误:

C:\ Program Files \ Java \ jre6 \ bin> java -version在java java / lang / NoClassDefFoundError初始化期间发生错误:java / lang / Object

我们的安装程序不修改任何Java文件,只是安装的tomcat文件。 所以,我被困在可能导致Java停止工作的原因。

唯一已知的解决方法是彻底重新安装Java,然后重新启动Tomcat服务。 有谁知道什么会导致Java JRE被破坏,只有在计算机重新启动后才会失败? 我们在32位和64位操作系统(包括Windows XP,Windows Server 2003和Windows Server 2008 R2)上重新创build了这个问题。

您的安装程序可能正在尝试覆盖JRE文件。 比较好的系统和损坏的系统之间的JAVAregistry项和系统path设置。 我的猜测是registry项已被覆盖。

下面的post提到了我们发生的同样的事情,即当Java更新程序在使用Java运行服务时尝试更新时,可能会损坏Java:

Tomcat 7.0.22 Windows服务因JRE更新而中断

我想知道是否在安装Tomcat之后运行了Java更新,这会导致此问题。

您需要审核您的安装程序,检查其更改的每一件事情 ,并validation:

  • 需要执行这个改变
  • 这个改变不会破坏别的东西