Windows – Java JRE corrupted after updating web application stack using a custom built MSI

javatomcatwindowswindows-installer

We have an Java web application that is installed on a Windows environment. We use Advanced Installer, a commercial product, to build the MSI. The installer installs Tomcat 7, Apache 2.0 and deploys our application code.

During an upgrade the tomcat files are updated and tomcat service is reinstalled.
We get a note saying that not all files could be installed so a restart is necessary after the install.

If we ignore the restart prompt, everything works flawlessly. But, once the computer is restarted, Java no longer works and the Apache Tomcat Windows service does not start. Even running "java" or "java -version" in the JRE bin directory results in the following error:

C:\Program Files\Java\jre6\bin>java -version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

Our installer isn't modifying any of the Java files, just the installed tomcat files. So, i'm puzzeled as to what could be causing Java to stop working.

The only known work around is to completely re-install Java and then restart the Tomcat service. Does anyone know what would cause the Java JRE to be corrupted and only fail after the computer is restarted? We have recreated this problem on both 32 and 64 bit OSes including Windows XP, Windows Server 2003 and Windows Server 2008 R2.

Best Answer

Your installer may be trying to overwrite the JRE files. Do a comparison of the JAVA registry entries and system path settings between a good system and a corrupted system. My guess is the registry entries have been overwritten.