背景:
环境变量配置好后,在命令行下执行Java、javac命令均正常;但是双击startup启动tomcat时出现闪退现象,重新配置环境变量无效。
一、先看到问题才行(找准病因才好下手治病):
闪退根本看不清命令行里面打印了什么,于是在startup.bat里面,最后一行加上pause,使得窗口不会关闭,打印信息如下:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
明明配置好了环境变量,为啥显示找不到呢?
二、寻找解决办法,网上大约有这样几种说法:(记在这里备用)
1、环境变量配置那里,使用系统变量而不是用户变量;(符合)
2、检查端口是否被占用;(显然没有被占用,而且我们的报错信息也显示了是环境变量问题)
3、在已解压的tomcat的bin文件夹下找到startup.bat,右击->编辑。在文件头加入下面两行:
SET JAVA_HOME=D:\Java\jdk1.7 (java jdk目录)
SET TOMCAT_HOME=E:\tomcat-7.0 (解压后的tomcat文件目录)
在已解压的tomcat的bin文件夹下找到shutdown.bat,右击->编辑。在文件头加入下面两行:
SET JAVA_HOME=D:\Java\jdk1.7 (java jdk目录)
SET TOMCAT_HOME=E:\tomcat-7.0 (解压后的tomcat文件目录)
(这种办法,显然很麻烦,服务器上那么多tomcat,不可能挨个去设置一遍吧。。。,我是比较懒,继续寻找一劳永逸的办法)
三、那该怎么解决呢?
问题的根源在环境变量,重装过、命令行窗口也确定正常,那么,是不是tomcat和命令行读取环境变量的方式不一样呢?
这时候能想到的验证方式,就是重启服务器。结果真的可以了。关于具体的生效方式,环境变量使用等等,后面有机会再深入学习下。
重启服务器还有个小插曲,服务器是客户提供的远程服务器,竟然没找到重启、关机。。。
于是使用命令行方式重启电脑:cmd——》shutdown -r