大概提示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!