比较坑的Tomcat闪退(win7)

2022-09-02 10:03:02 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

**我的tomcat7用了好久了,可以说是最开始学习javaweb的时候下载的,看着别人的视频里一顿配置,于是我也跟着一顿配置,虽然当时完全不知道在干什么,感觉好厉害的样子!然后直到有一天,你可能把电脑里一些没什么卵用的自己瞎做的项目删除了之后,然后你启动你的tomcat的startup.bat的时候,让人无语的时候来了,只见刷的一下cmd窗口就飞过,然后就没了,你还是一脸蒙逼,什么也不知道。。。。。

这个闪退很让人崩溃,有的时候很无语的就是单独启动Tomcat会闪退,而在Eclipse中用这个Tomcat却能正常工作,WFK!!!,关键你还不知道是什么错误,不知道从哪里入手,相信绝大多数人的想法!其实吧,大概可以从几个方面入手;

第一(很重要):一定一定要检查你的环境变量JAVA_HOME和JRE_HOME(最好配置一下CLASSPATH)有没有错误,我就是有一次JRE_HOME中有个地方打错了,然后我在PATH那里用的是;%JAVA_HOME%bin;%JAVA_HOME%jrebin,这样居然一直用了好久没出错,用tomcat的话貌似会检测这些环境变量来找到jdk的那些jar包的。。

第二(不推荐):这是网上绝大多数人解决问题的做法,就是在startup.bat或者setclasspath.bat等这些启动文件中去指定JAVA_HOME、JRE_HOME或者TOMCAT_HOME这些路径,这样我是极其不推荐的!因为这样做有的时候很坑爹,因为一旦你以后要换jdk,你看看你需要改多少东西。。。。。环境变量那里去改就不说了,然后你还要在这里一个个启动文件中去改,有一个地方没改肯定会出问题,你还不知道到底是哪里出问题了,于是你又要重头到尾再看看哪里有遗漏的地方。。。简直日了狗了

第三(可以试试):这个方法就是打开startup.bat文件,在文件的最后一行添加PAUSE,这个命令可以给你一个简单的错误提示,一些小错误可以在黑窗口看到,比如哪个环境变量有错误什么的(记住错误解决之后要将这个PAUSE去掉啊。。)**

第四(推荐):如果你在第三步中黑窗口显示按任意键继续,恭喜你,你只适合第四步!这一步就是看日志了,每个tomcat都有一个存放日志文件的目录,那里记录着你每次开启tomcat的信息,根据时间打开找到你刚刚启动失败的日志文件,然后打开日志文件(从最下面开始看,最下面的是最新的),就可以慢慢百度查了。。。我就碰到过一个闪退的错误:

错误如下:

代码语言:javascript复制
cument base D:javajava_workapaceTesttomcatWebContent does not exist or is not a readable directory
	at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:136)
	at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:5286)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5477)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1702)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1692)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

七月 07, 2019 9:29:54 上午 org.apache.catalina.core.ContainerBase startInternal
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1241)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1702)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1692)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	... 6 more
Caused by: org.apache.catalina.LifecycleException: Error in resourceStart()
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5478)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 6 more

七月 07, 2019 9:29:54 上午 org.apache.catalina.core.ContainerBase startInternal
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:192)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1241)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:758)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:705)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1702)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1692)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1249)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 6 more

看第一行 cument base D:javajava_workapaceTesttomcatWebContent does not exist or is not a readable directory,说的是我这个目录下面有个目录不存在,于是我想了一下,妈耶!这目录我在刚用tomcat的时候瞎搞,在tomcat中的server.xml配置文件中配置了一个虚拟目录,后来清理的时候把这个目录删了。。。。。难怪总是报错,坑啊!!!把这个docBase的内容删了,好了,世界又是如此美好!

第五(可能性最低):千万别是因为你的jdk和Tomcat版本的问题那就无语了。。。。那你就只能重新装某一个了,这是真的没办法!

就这么多吧!我的这个tomcat一直没舍得删除,就是要看看到底是什么错误,啊哈哈哈!!!!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139176.html原文链接:https://javaforall.cn

0 人点赞