如果你电脑上安装了多个tomcat版本,那么你就可以继续看下去了。否则可以退出()
省流版:看系统环境变量有没有CATALINA_HOME这一项,并且看这个CATALINA_HOME的值是否与当前版本安装路径相符合。
以下是我的排查错误纪实:
我电脑上本来也有了一个tomcat,只不过跟老师版本不一样。我把这两个都安到同一个目录了。然后我启动了老师版本,却发现输入localhost:8080没有任何响应。我首先去看了一下tomcat的config下的server.xml,发现端口号确实是8080没问题。然后试图访问localhost,发现没有响应,故推测是此处发生了问题。因而我上网按照该教程做了一遍:
127.0.0.1 拒绝了我们的连接请求--访问本地IP时显示拒绝访问
我重启电脑后,再次启动老师版本,发现还是不行。这时我开始怀疑是否我的tomcat没有正常启动,或者是否是因为8080这个端口号冲突了。所以我又找了一下如何查看端口号占用情况:
用netstat -a
命令即可。我便发现,在我开着tomcat的情况下,8080这个端口没有被使用。说明好像启动不大正常。于是我打开了另一篇回答:
按照它说的去查看日志文件。发现老师版本的tomcat下的log目录为空。我就去我本安装的版本下的log目录去看了,惊奇地发现,原来我在使用老师版本的tomcat时,tomcat用的是老版本的log目录。也就是说,很有可能config目录也是用的老版本的。我去查看老版本的config,发现端口是8888。于是我把老师版本的tomcat卸载了,去访问localhost:8888,成功力。
我探寻了以下原因,发现tomcat的startup里面如此写道:
if not "%CATALINA_HOME%" == "" goto gotHome
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
:okHome
rem ....
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
:end
这一段大概是在找到tomcat这个软件的位置。如果我们在环境变量里面设置了CATALINA_HOME,那么就会直接把软件位置定位到CATALINA_HOME的值的地方,随后之后的逻辑都在那边执行。
我发现我确实设置了这个CATALINA_HOME,并且:
它的值是我电脑原本有的老版本的目录!
故而,这也就说明了为什么老师的版本不去用自己的log,不去用自己的config,而用的是我电脑上的老版本的log,config了。。。