Received non-all-whitespace CHARACTERS or CDATA event in nextTag(). ,無法整齊打印驗證錯誤。 解析XML文檔出現的問題


在啟動keyCloak,想要在standAlone模式下切換數據庫,修改standAlone.xml文件時。

在bin/目錄下啟動standAlone模式出現錯誤:

10:07:24,799 INFO  [org.jboss.as.controller] (Controller Boot Thread) OPVDX002:無法整齊打印驗證錯誤:null
10:07:24,800 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
        at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143)
        at org.jboss.as.server.ServerService.boot(ServerService.java:377)
        at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:372)
        at java.lang.Thread.run(Unknown Source)
Caused by: javax.xml.stream.XMLStreamException: com.ctc.wstx.exc.WstxParsingException: Received non-all-whitespace CHARACTERS or CDATA event in nextTag().
at [row,col {unknown-source}]: [141,7]
        at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:650)
        at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:204)
        at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122)
        at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69)
        at org.jboss.as.server.parsing.StandaloneXml_7.parseServerProfile(StandaloneXml_7.java:607)
        at org.jboss.as.server.parsing.StandaloneXml_7.readServerElement(StandaloneXml_7.java:240)
        at org.jboss.as.server.parsing.StandaloneXml_7.readElement(StandaloneXml_7.java:137)
        at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:117)
        at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:52)
        at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122)
        at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:76)
        at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:126)
        ... 3 more
Caused by: com.ctc.wstx.exc.WstxParsingException: Received non-all-whitespace CHARACTERS or CDATA event in nextTag().
at [row,col {unknown-source}]: [141,7]
        at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:621)
        at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:491)
        at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:475)
        at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1224)
        at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.nextTag(XMLExtendedStreamReaderImpl.java:152)
        at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSource_4_0(DsParser.java:1927)
        at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSources(DsParser.java:229)
        at org.jboss.as.connector.subsystems.datasources.DsParser.parse(DsParser.java:189)
        at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:643)
        ... 14 more

10:07:24,803 FATAL [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0056: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
10:07:24,820 INFO  [org.jboss.as] (MSC service thread 1-7) WFLYSRV0050: Keycloak 4.4.0.Final (WildFly Core 5.0.0.Final) stopped

 

 

  這是standalone.xml的文件配置:

   <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" use-java-context="true">
                        <connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&tcpRcvBuf=102400000</connection-url>
                        <driver-class>com.mysql.jdbc.Driver</driver-class>    
                        <driver>mysql</driver>
                        <security>
                            <user-name>root</user-name>
                            <password>root</password>
                        </security>
                        <!--增加驗證信息      -->
                <!--            <validation>
                               <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                               <background-validation>true</background-validation>
                               <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                            </validation>
                            -->
                </datasource>


                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                    <driver name="mysql" module="com.mysql">
                    <!-- <driver-class>com.mysql.jdbc.Driver</driver-class>      -->
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    </driver>
發現問題:
1.認為是我的url-connection 寫的有問題,不斷地修改。
2.找到文件夾modules\system\layers\base\com\mysql\main    下的module 和mysql-connector-java.5.1.40jar
不斷修改JAR包的版本和modules.xml地配置。
3.詢問同事:一開始以為是字符集編碼的問題,但是后面發現了at [row,col {unknown-source}]: [141,7]這個地方出現了問題。
從此打開了自己的認知大門:發現了自己一開始的問題所在,而我卻忽略他了:
 
在修改standalone.xml時,在edit-plus出現如下頁面。
 

問題原因:

從下圖可以看到,因為不同編碼方式的空格占位符不同,比如在ANSI編碼里面,空格占用一個字符 ,但是在UTF-8里面,可能占用的是2個字符。
於是在Edit-plus中編輯的時候,出現以上情況的報錯。  從而造成無法解析xml的情況。

 

 
解決途徑:
1.手敲代碼,
2.從其他博客中復制過來的代碼,單行復制!單行復制!單行復制!
 
總結:今后從其他博客中復制過來的代碼一定要提前檢查各種問題,已經有很多次遇到這種情況:復制他人的代碼,結果不斷報錯。   今后復制粘貼的時候要留個心眼。
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM