第一種:查看Servlet3.0中出現了新增註釋@WebServlet。java
ervlet3.0中出現了新增註釋@WebServlet ,在Eclipse生成一個新的Servlet類時會自動增長@WebServlet註釋,改註釋會自動爲咱們配置web.xml,因此這時候咱們再去配置web.xml就會產生衝突,tomcat就不能啓動。這個時候咱們只須要刪除@WebServlet或者刪除web.xml配置就能正常啓動tomcat了。程序員
第二種:.端口被佔用(這個網上記載的很清楚,至於你想關閉別的進程的端口,仍是修改tomcat的配置端口,本身百度,或者Google)web
若是是這種小白能夠直接重啓電腦試試apache
第一步,在開始菜單->運行->cmd->輸入netstat -ano,在本地地址那欄能夠查看哪一個進程佔用了8080和8009端口(具體看你的Tomcat服務器是用什麼端口的);tomcat
第二步,使用taskkill /pid 6856 /f 將端口關閉,其中6856表明佔用窗口的PID,每臺機子都不同,根據實際狀況來服務器
------------------------------------------------------------eclipse
通常有以上兩種狀況致使的沒法運行,報錯。因爲我卸載了tomcat9,從新安裝了tomcat9,後來又卸載,從新安裝了tomcat8.5,仍是會出現Server Tomcat Server at localhost failed to start。我也卸載了個人oxygen版本的eclipse(此版本是2017版本的),而後下載了最新的eclipse,又卸載掉最新的eclipse版本,從新下載oxygen版本,這個問題仍是存在。再後來我有下載回來了最新版本的eclipse。學習
我說的那麼囉嗦的緣由是,若是出現Server Tomcat v9.0 Server at localhost failed to start,並且輸出錯誤信息:xml
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java...........blog
狀況1:(先找到你的tomcat安裝路徑,在bin下找到shutdown.bat,雙擊關閉服務器,而後回到eclipse,右擊下面的服務器,remove項目,而後clean一下,再從新運行項目)
若是仍是不行,那麼重裝tomcat,由於tomcat才十幾M,下載直接解壓就能夠用了。(前提是你配置好了環境,環境很好配,網上一大把資料)
這種狀況我以爲通常能夠經過重裝tomcat服務器解決。
狀況2:能夠打開正常的靜態網頁,可是一旦轉發servlet,就報錯!(以下圖)
這種狀況的話,說明你tomcat服務器沒毛病,只是你程序自己的問題,404,表示你的問題,由於服務器找不到資源,這是你本身的鍋。
通常出現這種問題,絕對是你的servlet配置出現了問題,首先你要知道servlet這玩意已經出來這麼久了,tomcat服務器對它的穩定性絕逼很是穩定,由於sun公司的程序員可不是吃素的,玩了這麼久的servlet,對servlet的支持性若是不穩定的話,那還要他們幹嗎!
因此問題出如今你身上後就容易解決了。
解決思路1:若是你是用web.xml配置的,那麼你絕對某個配置寫錯了,纔會引發錯誤,這個須要你本身看看web.xml下面的servlet配置的名稱和地址是否正確,而後進行修改!
解決思路2:若是你使用的是servlet3.0方式進行配置的話,你必定要確報你的jdk版本是1.6及1.6以上的,由於這是1.6或1.6以上才支持servlet註解配置的。因此肯定jdk版本之後,你還要注意你的WebServelt("/demo1"),例如這個註解配置,你是否遺漏了很重要,卻不起眼的「/」,這個小斜槓,而後檢查你的全部servlet,逐個修改。
解決思路3:若是你是採用web.xml,加上servlet3.0的註解左右開弓進行開發的,那麼恭喜你,這樣出錯率更大,由於你若是在web.xml下面配置完成了的話,還使用servlet3.0註解配置,那麼可能無心間使用了相同名稱可能會報錯,或者web.xml有一個配置,爲Boolean值,錯誤定義了他的值,你將會報錯,即便你的servlet註解和web.xml的配置沒有相同名稱。
總結一下:
1.就是若是你是整個tomcat,服務器出錯了,那麼能夠選擇從新安裝,而後從新配置項目;也能夠關閉服務器,移除項目,再從新運行項目。
2.若是你是單純servelt,訪問404錯誤,那麼不要懷疑是tomcat的jar包和你引進的jar包引發的衝突致使你沒法使用servlet,由於這種狀況微乎其微,對於一個剛入門,才學習到servlet的人來講,更是如此,你應該多看看本身的代碼,由於95%以上是你的代碼不規範,或者邏輯錯誤引起的問題!那麼惟一能夠作的就是檢查你的代碼!
goodbye!!!