TomCat中startup.bat文件一闪而过解决方法(超详细)
今天启动tomcat时,双击startup.bat文件一闪而过真是弄得我头疼,网上的解决方案都不见效,花了好些时间才解决,同时也了解到很多新玩意。
环境
- jdk:17.0.1(2021年12月下载)
- Tomcat:10.0.20(2022年4月下载)
- 皆为当时最新版
解决
首先,我们先不让他一闪而过,看看是什么原因,编辑startup.bat文件,在最后加上pause命令(解决后删掉)。这时它提示我找不到jre环境变量,去网上找解决方案都是说jdk环境变量没有配置好,但是我很奇怪,我确实没有配置过jdk环境变量,但是平时可以正常使用(懒得),所以为什么找不到jre环境变量呢?然后我就去看我的系统环境变量,让我发现了一条:C:\Program Files\Common Files\Oracle\Java\javapath。这是他自动给我配置好的吗?好奇与疑问,我顺着文件路劲,确实java.exe、javac.exe、javaw.exe、jshell.exe文件在这里。我又开始网上冲浪,答案确实是他自己配的,它将这几个命令复制到了C:\Program Files\Common Files\Oracle\Java\JavaPath。而Tomcat要的是JAVA_HOME这个环境变量。于是我配置好了该环境变量。
然后在我配置jre环境变量时,我发现没有。又开始冲浪,然后发现在jdk1.8之后都没有。需要在相应的jdk安装目录下打开命令行,输入:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre,才会显示出来。
OK,还是不行。继续冲浪,发现原因:后来较新版本安装完不会自动登记环境变量JAVA_HOME,JRE_HOME。又是在这个文件登记环境变量JAVA_HOME,JRE_HOME,又是在那个文件加什么东西,通通试了,没用。
终于,找到解决方案,在tomcat的bin目录下的setclasspath.bat中添加:set JRE_HOME=jre位置。还是不行,因为11版本后的jdk默认已经安装了jre,所以,JRE_HOME设置乘和JAVA_HOME一致即可。所以最后最后,在tomcat的bin目录下的setclasspath.bat中添加:set JRE_HOME=jdk位置。成功!!!!
啊对成功了,但没完全成功,命令行中文乱码,虽然不影响运行,但是我TM的受不了啊。继续找问题,OKOK,电脑系统默认字符集为GBK,但tomcat是utf-8,OK简单,我把tomcat也换成GBK就好了:修改conf文件下的logging.properties文件,将控制台输出的编码修改为GBK:java.util.logging.ConsoleHandler.encoding = GBK。
终于解决了。