天天看点

Eclipse下启动tomcat(server)之后访问localhost报404异常的解决一.排查tomcat本身二.排查eclipse中的配置————————————————————————2020分割线——————————————————补充

先找到问题出在哪里

一.排查tomcat本身

停掉eclipse中的tomcat,打开tomcat的本地安装目录,bin文件夹下点击startup(手动直接启动),会跳出cmd窗口。有两种可能:

   1.如果可以启动,即cmd窗口显示了完整的加载信息,可以看到最后一行为“信息: Server startup in xxxx ms”,不要关闭这个窗口,访问localhost,可以看到tomcat首页。这就说明环境配置和tomcat 软件本身是没问题的,问题出在eclipse中的配置,参看第二步;

  2.若是点击startup出现cmd一闪而过,则说明tomcat本身有问题,(以下内容参考自这位同学:https://blog.csdn.net/stypace/article/details/38083581)

先用记事本打开startup.bat(或者鼠标右键,点编辑),找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause(暂停等待的意思)

Eclipse下启动tomcat(server)之后访问localhost报404异常的解决一.排查tomcat本身二.排查eclipse中的配置————————————————————————2020分割线——————————————————补充
Eclipse下启动tomcat(server)之后访问localhost报404异常的解决一.排查tomcat本身二.排查eclipse中的配置————————————————————————2020分割线——————————————————补充

再次执行startup.bat,就会看到上图,当我们按任意的键时cmd窗口又是一闪而过了。但是这已经确定了我们的环境变量都是正确的。如果根本不停留,那就是环境配置不对,需要检查环境变量是否异常(具体请另行百度)。

为了更加详细的看到信息,我们再来更改一句:找到call "%EXECUTABLE%" start %CMD_LINE_ARGS% 把里面的start替换为run。

Eclipse下启动tomcat(server)之后访问localhost报404异常的解决一.排查tomcat本身二.排查eclipse中的配置————————————————————————2020分割线——————————————————补充

再来看看cmd窗口里面输出错误信息了,具体信息各有不同,像我就是因为之前有个项目部署在tomcat中时修改过server.xml中的host配置,导致每次启动都会去加载那个已经不存在的项目,自然不能正常启动了。也可以直接打开tomcat安装目录下的logs文件夹,查看catalina里面的日志信息,同样能找出异常原因。针对这些原因去修正你的配置(这些信息eclipse控制台一般是不显示的)。再次启动startup.bat会看到已经启动成功了(记得把之前修改的内容run、pause还原回去)。此时在访问localhost就不会报错了。

二.排查eclipse中的配置

关掉cmd,在eclipse中新建一个server,不要添加项目,直接启动,再访问localhost,如果依然是404,stop之后,双击Server窗口中的服务器,打开服务器属性窗口

Eclipse下启动tomcat(server)之后访问localhost报404异常的解决一.排查tomcat本身二.排查eclipse中的配置————————————————————————2020分割线——————————————————补充

Server Locations选择第二个选项Use Tomcat Installation

Eclipse下启动tomcat(server)之后访问localhost报404异常的解决一.排查tomcat本身二.排查eclipse中的配置————————————————————————2020分割线——————————————————补充

系统默认选择第一个选项;

第一个选项指的是将项目保存在workspace路径下;

第二个选项指的是将项目保存至tomcat安装目录下,我们一般选择这个,这样就不用再手动部署到tomcat文件下了;

第三个选项是自定义项目保存路径。

选择完毕之后,ctrl+s保存。再访问一下localhost就可以正常显示了。至此,tomcat的配置都正常了,添加需要部署的项目,如果negotiations正常访问就对了,如果还是不行,那就是项目本身配置有问题,需要检查项目本身了。

————————————————————————2020分割线——————————————————

补充

  最近因为项目原因更新了jdk,使用了jdk1.8,开发时用的一个专用IDE,它集成了web容器,所以很长时间没用tomacat。今天在tomcat下部署一个war包,启动时又是华丽丽的一闪而过……而且这次更坑,连错都不报了,startup.bat加pause也看不到情况,后来在call "%EXECUTABLE%" start %CMD_LINE_ARGS%这一行,改start为run,终于看到一点端倪:Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object——类的老祖宗找不到了!!!

这就是jdk环境问题了,先检查环境变量,cmd运行java -version,没问题;运行javac,不行,错误就是上面那些。看看路径配置是否正确(具体参考:https://blog.csdn.net/yzliang2016/article/details/77680601),我的路径配置是正确的,打开jdk下jre下bin,发现没有rt.jar。基础类库都在这个包里,没它自然不行,要补上。jdk1.8安装时有两个文件夹,C:\Program Files\Java下分为jdk与jre(jdk里面也有一个jre,与外面这个不一样),从jre中找到rt.jar,直接复制过来,cmd运行javac,不报错,但是一堆乱码(中文解释乱码)。这时启动tomcat,还是不行的。于是先将jdk/bin/jre下的bin重命名bin_old(保险),再将外面那个jre的整个bin复制过来,cmd运行javac,可以了。启动tomacat,也可以了。

应该还有一种解决方法,即修改环境变量中jre的路径为与jdk同级的那个jre,但是没有试过。