服務器
即上篇通過將web項目打成war包部署到tomcat服務器,解決mysql問題后,又出現了新問題,真是一波三折,所以將解決過程分享給大家,希望能幫助到小伙伴們~
將打好的war包拷貝到tomcat的webapps目錄,然后在tomcat的bin目錄找到startup.bat批處理文件,直接雙擊執行,結果運行幾秒后直接閃退,頓時有種不好的預感,在瀏覽器訪問web項目,結果連localhost:8080都無法訪問,web項目未發布成功,一臉懵逼~
沒有日志看不到為啥發布不成功額,想了想,可以稍微修改下startup.bat批處理文件,添加pause,這樣運行結束只有按任意鍵才會關掉窗口(調試成功,在去掉pause)。
如果有錯誤信息,這時候會顯示出來,可以再根據它的錯誤提示。
此時,發現顯示了一些環境變量,是不是環境變量沒有配置引起的報錯呢,就去檢查了下,發現沒有配置jre_home環境變量。配置后,發現還是閃退。
也不清楚時環境變量引起的還是什么原因,沒轍了,只能再找度娘了。
經過查資料,關于tomcat中startup.bat原理的相關內容,覺得很有幫助,摘取部分片段分享下,可能跟解決這個問題沒關系,可略過~
startup.bat 解析
驗證catalina_home 環境變量是否設置,如果沒有設置則通過catalina_home/bin目錄下查找catalina.bat文件來確定catalina_home環境變量是否有效,如果沒有找到catalina.bat 則goto end,結束。
驗證catalina.bat是否存在,如果不能存在則結束。
判斷啟動 startup.bat 是否有參數,如果有參數,如果有有則賦值給 cmd_line_args變量。
通過call執行catalina.bat ,并傳入參數。
其實startup.bat 的主要作用就是幫你找到catalina.bat并執行它。
好處:
如果你配置catalina_home的環境變量了,就可以把startup.bat 放到任何目錄下,都可以啟動tomcat了。
好了,根據對startup.bat文件的解析,發現現在的問題跟環境變量沒關系。瞬間有點失落。經驗告訴我,可以查看日志撒。發現日志存在錯誤日志額。
問題解決方法請參考:web項目打成war包部署到tomcat時報mysql access denied for user \\\’root\\\’@\\\’localhost\\\’ (using )錯誤解決方案
tomcat其他問題總結:
問題一:neither the java_home nor the jre_home environment variable is defined
tomcat的startup.bat,它調用了catalina.bat,而catalina.bat則調用了setclasspath.bat,只要在setclasspath.bat的開頭聲明環境變量(紅色兩行)就可以了,原因是后來較新版本安裝完不會自動登記環境變量java_home,jre_home。
這樣在每次運行startup.bat時就自動注冊了java_home,jre_home。
問題二:cannot find d:\\\\program files\\\\apache-tomcat-7.0.52\\\\bin\\\\setclasspath.bat
可能是catalina_home的值在某個地方被寫死了,像我的綠色版tomcat在bin文件下多了一個setenv.bat的文件,打開一看果然是在這里面被寫死了catalina_home的路徑,這應該是為了某種原因被人后加上的設置文件,把這個文件刪除之后,tomcat可以正常運行了。
這種情況,可以去看catalina.bat中的配置,如下圖,可能配置死的內容就在這個文件里。
總結
以上所述是小編給大家介紹的web項目打成war包部署tomcat時運行startup.bat直接閃退部署失敗的快速解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對西部數碼網站的支持!
很慢呀這個怎么回事還不如手動來的快A5域名每日快訊:七位數交易的域名被終端啟用阿里云云服務器怎么升級固件SQL如何實現數據計數阿里云服務器解除租用臨沂騰訊云服務器怎么樣百度云服務器刪除保存時間百度清風算法:標題書寫和分頁面類型標題建議