更换JAVA虚拟机导致Tomcat服务启动不成功的解决过程

前几天为一个客户维护WINDOWS服务器时突然发现JAVA虚拟机居然是32位的,又查看了一下操作系统的版本是64位的。不能忍,JAVA虚拟机怎么能是32位的呢?于是把原来的32位虚拟机卸载掉,下载了64位的JAVA虚拟机,并进行了安装。
第二天客户打电话说网站打不开了。远程过去一看,TOMCAT服务没有启动,尝试启动TOMCAT服务,启动不成功!
想起重装了JAVA虚拟机,查看了一下JAVA的安装目录,似乎跟以前的不一样了,于是到环境变量中修改了JAVA_HOME的值,尝试启动TOMCAT服务,仍然启动不成功。
运行Tomcat8w.exe,检查JAVA选项卡下的Java virtual Machine的设置,发现还是重新JAVA虚拟机前的路径,于是按新的路径进行了设置,尝试启动TOMCAT服务,仍然启动不成功。
到了这里有点麻爪爪了。尝试运行startup.bat,发现居然能成功运行,检查了一下应用,发现都能够访问。关闭命令行的Tomcat,这不是客户需要的。
查看commons-daemon日志,发现里面显示重复出现:
Starting service…
%1 不是有效的 Win32 应用程序。
Failed creating java C:\Program Files\Java\jre1.8.0_181\bin\server\jvm.dll
%1 不是有效的 Win32 应用程序。
ServiceStart returned 1
%1 不是有效的 Win32 应用程序。
Run service finished.
尝试运行service.bat remove删除服务,再运行service.bat install,居然提示安装服务失败!查看了service.bat的内容,发现里面用到了环境变量JRE_HOME,但是修改环境变量时并没看到JRE_HOME这个变量,于是到环境变量中添加了环境变量JRE_HOME,再运行service.bat install,提示安装服务成功。尝试启动TOMCAT服务,又双叒叕启动不成功。
抓狂了。百度了一下Failed creating java C:\Program Files\Java\jre1.8 jvm.dll,发现都只是提到检查JAVA选项卡下的Java virtual Machine的设置。
突然想到,先前的排查都是针对JAVA虚拟机,那么TOMCAT呢?于是果断下载了一个64位的TOMCAT,进行了简单的配置,然后在原来的TOMCAT的bin目录下运行了service.bat remove,删除了TOMCAT服务,再到刚部署的TOMCAT的bin目录下运行service.bat install,安装TOMCAT服务,尝试启动TOMCAT服务,启动成功了!停止Tomcat服务,把应用部署到新的Tomcat下,重新启动Tomcat服务,检查应用,发现都能够访问了。
总算搞定了。居然是Tomcat与Java不匹配,必须同是32位或者同是64位的。在TOMCAT的bin目录下运行catalina.bat version,可以查看Tomcat是32位的还是64位的。
Architecture: amd64 表示Tomcat是64位的,x86就表示Tomcat是32位的。
还是莫得经验,要是老鸟估计早就想到是Tomcat与Java的版本不匹配了。
记录下来,当作笔记,也供新人参考。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐