大概提示SEVERE: Could not contact localhost:8005. Tomcat may not be running.这个错误消息。捣鼓一番,发现是tomcat根本就没有启动成功导致的。
1.验证tomcat是否启动成功:
远程连接你的服务器,使用xrdp或FTP工具(WinSCP)都可以,我这里直接使用了WinSCP。
打开控制台,输入 ps -ef|grep tomcat,观察如下的截图,如果仅仅出现截图中类似的一条记录,则证明tomcat没有启动成功。
如果你看到的如下的截图,证明tomcat启动是ok的,本文后面的部分将对你没有什么帮助,直接右上角点x即可。
2.让tomcat正常跑起来
2.1修改java.security文件
找到jdk的路径,使用如下的三条指令即可看到jdk真实目录:
which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
跳转到jdk目录,找到java.securty文件,如图:
将securerandom.source那一行修改为 securerandom.source=file:/dev/./urandom 即可,重新尝试启动tomcat,验证是否成功,如果还不成功,则就要看日志了。
2.2根据日志分析问题
找到tomcat安装路径,例如我的路径/usr/local/apache-tomcat-8.5.32/logs,找到最近的catalina日志。
日志提示信息如下:
03-Aug-2018 16:22:50.522 SEVERE [Catalina-startStop-1] 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:941)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
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:167)
... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@13af2a8b]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4907)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5042)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [/demo-0.0.1-SNAPSHOT] is not valid
at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
显然日志提示我的项目路径不正确。
找到conf下server.xml文件,发现目前的docBase路径是带了 ‘/’ 的,去掉 ‘/’ 改成如下即可。
原来的:<Context path="" docBase="/demo-0.0.1-SNAPSHOT" debug="0" reloadable="true"></Context>
新的: <Context path="" docBase="demo-0.0.1-SNAPSHOT" debug="0" reloadable="true"></Context>
然后重新启动tomcat,一切ok!