Tomcat服務(wù)器啟動(dòng)失敗的一些原因及解決辦法總結(jié)
一、Tomcat服務(wù)器啟動(dòng)失敗。
...................省略大量上面的內(nèi)容
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 子容器啟動(dòng)失敗
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:926)
... 13 more
Caused by: org.apache.catalina.LifecycleException: 子容器啟動(dòng)失敗
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:938)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
... 13 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 無(wú)法啟動(dòng)組件[org.apache.catalina.webresources.StandardRoot@12a94400]
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:926)
... 21 more
Caused by: org.apache.catalina.LifecycleException: 無(wú)法啟動(dòng)組件[org.apache.catalina.webresources.StandardRoot@12a94400]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4834)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4972)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
... 21 more
Caused by: java.lang.IllegalArgumentException: 指定的主資源集 [G:\apache-tomcat-10.0.21-windows-x64\apache-tomcat-10.0.21\webapps\java.html] 無(wú)效
at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:762)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:719)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 30 more
06-Apr-2023 22:27:27.968 信息 [main] org.apache.coyote.AbstractProtocol.pause 暫停ProtocolHandler["http-nio-8080"]
06-Apr-2023 22:27:27.968 信息 [main] org.apache.catalina.core.StandardService.stopInternal 正在停止服務(wù)[Catalina]
06-Apr-2023 22:27:27.968 信息 [main] org.apache.coyote.AbstractProtocol.destroy 正在摧毀協(xié)議處理器 ["http-nio-8080"]
已與服務(wù)器斷開(kāi)連接
(1)找原因:看最后一個(gè)Caused by:后面的內(nèi)容。
Caused by: java.lang.IllegalArgumentException: 指定的主資源集 [G:\apache-tomcat-10.0.21-windows-x64\apache-tomcat-10.0.21\webapps\java.html] 無(wú)效
這是最后一個(gè)Caused by的內(nèi)容:java.html無(wú)效。
去tomcat下的conf目錄下的server.xml文件:直接翻到最下面-看到 "/java.xml".

(2)解決:我是直接刪除"java.html",然后可運(yùn)行。

二、Tomcat工件部署出錯(cuò)。

(1)錯(cuò)誤原因1:javax.servlet.ServletContextListener。
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener。
1、jar文件沒(méi)有同步發(fā)布到自己項(xiàng)目的lib目錄中,也即是你編譯之后生成的文件內(nèi),沒(méi)有l(wèi)ib目錄(沒(méi)有jar包)
(1)解決方法一:換一個(gè)版本的Tomcat。
本來(lái)是10.0.21版本的tomcat服務(wù)器,但是一直工件錯(cuò)誤,然后找了很久都沒(méi)找到解決方法,但是 javax.servlet.ServletContextListener類是可以找到的。然后我換了個(gè)版本的服務(wù)器,出奇的竟然可以正常部署了。

(2) 解決方法二:在pom.xml文件中添加<packaging>標(biāo)簽
<packaging>war</packaging>
(3) 解決方法三:Put into Output Root

這是由于pom.xml中下載的jar包未被部署。我們先ctrl+shift+alt+s打開(kāi)Project Structure窗口,選擇Artifacts,選擇要打包部署的項(xiàng)目,在Output Layout –> Web-INF查看是否有l(wèi)ib目錄,如果右邊Available Elements窗口還顯示有jar包,說(shuō)明這些jar包未添加,則應(yīng)右擊選擇Put into Output Root就可以了。
注意:這些方法,說(shuō)的是我的經(jīng)驗(yàn),不一定就可以解決或正確,因?yàn)橛袝r(shí)候做了某個(gè)操作莫名奇妙就可以運(yùn)行了,然后改回來(lái)之后,還是可以運(yùn)行,這個(gè)操作就存在疑問(wèn)????了,因?yàn)楹茈y驗(yàn)證或者驗(yàn)證不了。
(2)出錯(cuò)原因2:NotWritablePropertyException: Invalid property 'jdbcTemplate' of bean class [dao.impl.UserDaoImpl]。
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'jdbcTemplate' of bean class [dao.impl.UserDaoImpl]: Bean property 'jdbcTemplate' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.createNotWritablePropertyException(BeanWrapperImpl.java:243)
at org.springframework.beans.AbstractNestablePropertyAccessor.processLocalProperty(AbstractNestablePropertyAccessor.java:426)
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:278)
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:266)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:97)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:77)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1638)
... 69 more
13-Apr-2023 12:37:32.663 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Closing Spring root WebApplicationContext
13-Apr-2023 12:37:37.082 信息 [Catalina-utility-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
13-Apr-2023 12:37:37.082 信息 [Catalina-utility-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
13-Apr-2023 12:37:37.085 信息 [Catalina-utility-1] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@74aed74b')
(1)錯(cuò)誤:類沒(méi)有設(shè)置setter方法。
Invalid property 'jdbcTemplate' of bean class [dao.impl.UserDaoImpl]: Bean property 'jdbcTemplate' is not writable or has an invalid setter method.
(2)解決方法:在pom.xml文件中<packaging>war</packaging>。
我的問(wèn)題是我在該類中已經(jīng)加了setter方法,但是它一直出現(xiàn)這個(gè)問(wèn)題。
然后我就在pom.xml文件中添加了以下代碼。
<packaging>war</packaging>
三、Tomcat服務(wù)器啟動(dòng)時(shí)的日志是亂碼。

(1)解決方法1-環(huán)境變量。
在系統(tǒng)的環(huán)境變量中添加一個(gè)變量,名為: JAVA_TOOL_OPTIONS, 值為:-Dfile.encoding=UTF-8\n這樣就能讓server下的中文也變成UTF-8編碼。
(2)解決方法2-tomcat配置VM-options。
在tomcat配置VM- options: 填入:-Dfile.encoding=UTF-8。(這個(gè)設(shè)置后還是亂碼的,所以可以不設(shè)置這里,直接在IDEA中設(shè)置)。

(3)解決方法3-IEDA配置VM-options。
DEA help->edit custom VM options中保留-Dfile.encoding=UTF-8。


(4)解決亂碼后的顯示。

總結(jié)
到此這篇關(guān)于Tomcat服務(wù)器啟動(dòng)失敗的一些原因及解決辦法的文章就介紹到這了,更多相關(guān)Tomcat服務(wù)器啟動(dòng)失敗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MAC 命令行啟動(dòng)tomcat的詳細(xì)介紹
這篇文章主要介紹了MAC 命令行啟動(dòng)tomcat的詳細(xì)介紹的相關(guān)資料,主要是修改授權(quán)及命令啟動(dòng)的介紹,需要的朋友可以參考下2017-08-08
搭建Tomcat 8源碼開(kāi)發(fā)環(huán)境的步驟詳解
相信大家都知道開(kāi)源軟件tomcat目前幾乎已經(jīng)是Java web開(kāi)發(fā)的必備軟件了,目前有很多關(guān)于tomcat的書(shū)籍,已經(jīng)通過(guò)配置對(duì)tomcat進(jìn)行一些跟應(yīng)用業(yè)務(wù)功能的調(diào)優(yōu),但感覺(jué)如果僅僅只是了解一些配置,可能稍微少了點(diǎn)什么,下面通過(guò)本文深入到源代碼中進(jìn)行學(xué)些和了解。2016-10-10
Tomcat9安裝windows服務(wù)的詳細(xì)教程
這篇文章主要介紹了Tomcat9安裝windows服務(wù)的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
如何修改tomcat項(xiàng)目的圖標(biāo)(兩種)
這篇文章主要介紹了修改tomcat項(xiàng)目圖標(biāo)的方法,一種形式是修改頁(yè)面,另一種形式是修改webapps/root 圖標(biāo),具體修改方法大家參考下本文2018-03-03
一次tomcat自動(dòng)關(guān)閉的bug解決
這篇文章主要給大家介紹了一次關(guān)于tomcat自動(dòng)關(guān)閉的bug的解決過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用tomcat具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Tomcat catalina.out日志自動(dòng)分隔方式
文章介紹了使用logrotate工具按日期分割Tomcat的catalina.out日志文件的方法,包括安裝logrotate、配置logrotate文件、測(cè)試配置、設(shè)置定時(shí)任務(wù)等步驟,配置文件中包含日志切割頻率、保留舊日志數(shù)量、壓縮等參數(shù)2026-04-04
在tomcat將一個(gè)IP地址綁定多個(gè)域名的方法
這篇文章主要介紹了在tomcat將一個(gè)IP地址綁定多個(gè)域名的方法,方法雖簡(jiǎn)單,但比較實(shí)用,需要的朋友可以參考下2014-09-09

