tomcat双击startup.bat启动时闪退
tomcat之前用的好好地沒有問題,今天重啟一下就發現雙擊startup.bat一閃而過,接著就沒有任何動靜了,tomcat無法啟動啦?
于是網上搜了一堆tomcat閃退的解決辦法,其中有說是沒有讀取到環境變量,需要再tomcat的startup.bat里面加上下面兩行配置:
SET JAVA_HOME=C:\jdk1.8\jdk1.8.0_65 SET CATALINA_HOME2=C:\TomcatForJenkins但是這個我之前就已經配置好了的啊,jdk環境都沒有問題的,后來我想到,會不會是我后來在server.xml里面加了一個外部目錄的映射出錯的?
<!-- 視頻,圖片資源文件夾映射--> <Context docBase="C:\resources" reloadable="true" debug="0" path="/resources"/>后來我又把我添加的這行“Context”這行用<!--? -->注釋掉了,然后再雙擊startup.bat啟動tomcat,結果還是一樣的令人失望,于是我斷定,并不是
由于這兩行配置造成的,難道是和另外一個已啟動的tomcat的某些配置沖突啦?(我的服務器上運行了兩個tomcat,另一個正常啟動能)。
經過多番排查,并沒有發現什么問題。然后繼續在網上尋求答案,這篇貼子里面有提到catalina的日志,突然想到,對呀,怎么不去看日志呢,腦子秀逗了?
于是發現日志里面有一個警告如下:
21-Oct-2017 14:56:01.060 WARNING [main] org.apache.catalina.startup.Catalina.load Catalina.start using conf/server.xml: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 2 字節的 UTF-8 序列的字節 2 無效。at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:701)at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:372)at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1790)at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:1303)at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:778)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:1039)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2985)at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1451)at org.apache.catalina.startup.Catalina.load(Catalina.java:551)at org.apache.catalina.startup.Catalina.start(Catalina.java:613)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:497)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)21-Oct-2017 14:56:01.060 SEVERE [main] org.apache.catalina.startup.Catalina.start Cannot start server. Server instance is not configured.看到這,至少問題已經幫我們定位到是server.xml出問題啦,繼續往下找原因就很簡單啦,“2 字節的 UTF-8 序列的字節 2 無效”這又是什么鬼?難道是。。。。
對,就是這樣:自己把自己給坑啦!在我加的這行配置上有一行中文的注釋:
但是這行不是用<!--? -->注釋了么?難道注釋也會被編譯?最后把這行中文注釋改為英文的,再去啟動tomcat,竟然成功了!!!
原來xml頭定義中的encoding="utf-8",而輸入的中文卻不是utf-8編碼,而是ANSI編碼。。。
心得體會:1.在出現問題時,先看有沒有什么地方被記錄下日志,log是最能體現問題所在的,能幫我們快速定位到問題。
2.我還是太年輕了@_@,請叫我小白
?
轉載于:https://www.cnblogs.com/ynxrsoft/p/7704955.html
總結
以上是生活随笔為你收集整理的tomcat双击startup.bat启动时闪退的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发源码之ReentrantLo
- 下一篇: ContextLoaderListene