You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ调试Spring Boot时仅触发XMLConfigurationException问题

调试Spring Boot时仅触发的XMLConfigurationException问题及解决方案建议

调试Spring Boot应用时遇到以下异常,仅在调试场景下触发,正常运行无问题:

com.sun.org.apache.xerces.internal.xni.parser.XMLConfigurationException: http://apache.org/xml/features/xinclude-aware
    at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
    at com.intellij.rt.debugger.MethodInvoker.invokeInternal(MethodInvoker.java:223)
    at com.intellij.rt.debugger.MethodInvoker.invoke2(MethodInvoker.java:45)
    at java.xml/com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings.getFeature(ParserConfigurationSettings.java:204)
    at java.xml/com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.copyFeatures1(XIncludeHandler.java:2791)
    at java.xml/com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.copyFeatures(XIncludeHandler.java:2766)
    at java.xml/com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.reset(XIncludeHandler.java:604)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration.configurePipeline(XIncludeAwareParserConfiguration.java:164)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:867)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247)
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342)
    at org.apache.logging.log4j.core.config.xml.XmlConfiguration.<init>(XmlConfiguration.java:94)
    at org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory.getConfiguration(XmlConfigurationFactory.java:46)
    at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:533)
    at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:457)
    at org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:318)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:690)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
    at org.apache.commons.logging.LogAdapter$Log4jLog.<clinit>(LogAdapter.java:146)
    at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:113)
    at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:95)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
    at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:202)
    at de.biovis.DecisionApplication.main(DecisionApplication.java:21)

当前环境:Spring Boot 3.2.5、Open JDK 17、IntelliJ 2025.2.6.1,Maven构建。

已尝试的方法

  • 设置默认XML解析器:-D javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
  • 执行mvn dependency:tree | grep xml排查XML相关传递依赖,结果如下:
    [INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.15.4:compile
    [INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.15.4:compile
    [INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.15.4:compile
    [INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.15.4:compile
    [INFO] |  |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.2:compile
    [INFO] |  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.15.4:compile
    [INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.15.4:compile
    [INFO] |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.15.4:compile
    [INFO] |  |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.15.4:compile
    [INFO] |  |  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.15.4:compile
    [INFO] |     \- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:2.0.0.Final:compile
    [INFO] |  |  \- org.camunda.bpm.model:camunda-xml-model:jar:7.17.0:compile
    [INFO] |  |        +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.15.4:compile
    [INFO] |     +- com.fasterxml.jackson.datatype:jackson-datatype-guava:jar:2.15.4:compile
    [INFO] |     +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.15.4:compile
    [INFO] |  \- com.fasterxml:classmate:jar:1.6.0:compile
    
  • 调试com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings发现配置中缺少http://apache.org/xml/features/xinclude-aware等特性,确认Log4j配置无问题,Log4j配置如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration name="Worker LabEx 2">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout
                        pattern="[%d{ISO8601}][%-5level][bc=%X{barcode}][pc=%X{profilcode}] [%C{1.}] : %msg%n%throwable" />
            </Console>
    
            <RollingFile name="RollingFile"
                         fileName="${env:LOG_FOLDER_PATH}/logs/${env:HOSTNAME}.log"
                         filePattern="${env:LOG_FOLDER_PATH}/logs/$${date:yyyy-MM}/${env:HOSTNAME}-%d{-dd-MMMM-yyyy}-%i.log.gz">
                <PatternLayout>
                    <pattern>[%d{ISO8601}][%-5level][bc=%X{barcode}][pc=%X{profilcode}] [%C{1.}] : %msg%n%throwable</pattern>
                </PatternLayout>
                <Policies>
                    <!-- rollover on startup, daily and when the file reaches
                        10 MegaBytes -->
                    <OnStartupTriggeringPolicy />
                    <SizeBasedTriggeringPolicy
                            size="10 MB" />
                    <TimeBasedTriggeringPolicy />
                </Policies>
            </RollingFile>
        </Appenders>
    
        <Loggers>
            <!-- LOG everything at INFO level -->
            <Root level="info">
                <AppenderRef ref="Console" />
                <AppenderRef ref="RollingFile" />
            </Root>
    
            <!-- LOG "de.biovis*" at TRACE level -->
            <Logger name="de.biovis" level="trace"/>
            <!--<Logger name="org.thymeleaf" level="trace"/>-->
        </Loggers>
    
    </Configuration>
    

解决方案建议

1. 禁用IntelliJ调试器的提前类加载

在Spring Boot启动配置的VM参数中添加:

-Didea.debugger.early.class.loading=false

操作路径:Run/Debug Configurations -> 目标启动配置 -> Configuration标签 -> Modify options -> Add VM options,填入上述参数。调试器提前加载XML解析类可能导致XInclude特性未正确初始化,关闭该选项可避免此问题。

2. 引入完整的Apache Xerces依赖

在pom.xml中添加完整的Xerces实现,替换JDK内置的精简版本:

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.12.2</version>
</dependency>

内置Xerces在调试场景下可能存在特性缺失,完整包能确保所有XML相关特性正常加载。

3. 调整Log4j初始化时机

在启动类中提前初始化Log4j日志对象,避免类加载顺序冲突:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DecisionApplication {
    private static final Logger logger = LogManager.getLogger(DecisionApplication.class);

    public static void main(String[] args) {
        logger.info("Starting application...");
        SpringApplication.run(DecisionApplication.class, args);
    }
}

4. 清理IntelliJ缓存并重启

执行File -> Invalidate Caches... -> 选择Invalidate and Restart,清除调试器相关缓存,避免旧的类加载状态干扰应用启动。

内容的提问来源于stack exchange,提问作者Jan Tepke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 21:29:50