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

构建运行XML报错:根元素后文档标记必须格式良好

XML解析错误排查结果

报错核心原因是Checkstyle配置文件的XML标签嵌套、闭合逻辑完全混乱,并非你怀疑的<module name="IllegalImport"/>单行问题,具体错误点如下:

  • 根节点<module name="Checker">自始至终没有添加对应的闭合标签,解析器读到文件末尾都没找到根节点结束标记
  • <module name="TreeWalker">被提前闭合:写完命名规范相关检查项后就加了</module>,导致后续所有本应属于TreeWalker子节点的代码检查规则,全部被甩到了TreeWalker节点外部,甚至部分节点散落在根节点层级外,直接触发「根元素后内容格式不合法」的报错
  • 多个模块标签错误自闭合,子属性被写到标签外部:
    • <module name="AvoidStarImport"/>直接写了自闭合标记,后面配置excludes规则的<property>标签被甩到模块外部,还额外多了一个无匹配的</module>闭合标签
    • <module name="UnusedImports"/>同样提前自闭合,配置processJavadoc的<property>标签被甩到模块外部,也多了一个无匹配的</module>闭合标签
  • 配置文件末尾在<module name="MissingOverride"/>后多了一个无对应开标签的</module>,进一步打乱标签层级
修复后可正常运行的完整配置
<module name="Checker">
    <module name="LineLength">
        <property name="max" value="150"/>
    </module>

    <module name="BeforeExecutionExclusionFileFilter">
        <property name="fileNamePattern" value="module\-info\.java$"/>
    </module>
    <property name="fileExtensions" value="java, properties, xml"/>

    <!-- General file conventions -->
    <module name="NewlineAtEndOfFile">
        <property name="lineSeparator" value="lf_cr_crlf" />
    </module>
    <module name="FileTabCharacter"/>
    <module name="RegexpSingleline">
        <property name="format" value="\s+$"/>
        <property name="minimum" value="0"/>
        <property name="maximum" value="0"/>
        <property name="message" value="Line has trailing spaces."/>
    </module>

    <module name="TreeWalker">
        <!-- Naming conventions -->
        <module name="ConstantName"/>
        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="PackageName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>

        <!-- Checks for imports -->
        <module name="AvoidStarImport">
            <property name="excludes" value="java.io,java.net,java.lang.Math"/>
        </module>
        <module name="IllegalImport"/>
        <module name="RedundantImport"/>
        <module name="UnusedImports">
            <property name="processJavadoc" value="false"/>
        </module>

        <!-- Checks for Size Violations -->
        <module name="MethodLength"/>
        <module name="ParameterNumber"/>

        <!-- Checks for whitespace -->
        <module name="EmptyForIteratorPad"/>
        <module name="GenericWhitespace"/>
        <module name="MethodParamPad"/>
        <module name="NoWhitespaceAfter"/>
        <module name="NoWhitespaceBefore"/>
        <module name="OperatorWrap"/>
        <module name="SeparatorWrap">
            <property name="tokens"
                      value="COMMA,LPAREN,RPAREN,RBRACK,ARRAY_DECLARATOR"/>
            <property name="option" value="eol"/>
        </module>
        <module name="SeparatorWrap">
            <property name="tokens" value="DOT,METHOD_REF,ELLIPSIS,AT"/>
            <property name="option" value="nl"/>
        </module>
        <module name="ParenPad"/>
        <module name="TypecastParenPad"/>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround"/>
        <module name="SingleSpaceSeparator"/>

        <!-- Modifier Checks -->
        <module name="ModifierOrder"/>
        <module name="RedundantModifier"/>

        <!-- Checks for blocks. You know, those {}'s -->
        <module name="AvoidNestedBlocks"/>
        <module name="EmptyBlock"/>
        <module name="LeftCurly"/>
        <module name="NeedBraces"/>
        <module name="RightCurly"/>

        <!-- Checks for common coding problems -->
        <module name="EmptyStatement"/>
        <module name="EqualsHashCode"/>
        <module name="IllegalInstantiation"/>
        <module name="InnerAssignment"/>
        <module name="MultipleVariableDeclarations"/>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>

        <!-- Checks for class design -->
        <module name="DesignForExtension"/>
        <module name="FinalClass"/>
        <module name="HideUtilityClassConstructor"/>
        <module name="InterfaceIsType"/>
        <module name="VisibilityModifier"/>

        <!-- Miscellaneous other checks -->
        <module name="ArrayTypeStyle"/>
        <module name="UpperEll"/>
        <module name="Indentation">
            <property name="caseIndent" value="0"/>
            <property name="lineWrappingIndentation" value="8"/>
        </module>

        <!-- Checks for annotations -->
        <module name="MissingOverride"/>
    </module>
</module>
校验说明
  • 修复逻辑核心是把所有代码语法类检查规则统一放到TreeWalker模块内部,每个模块的属性配置全部包裹在对应module的开、闭标签内,删除多余的无匹配闭合标签,补全最外层Checker节点的闭合标记
  • 替换配置后可先通过IDE的XML语法校验功能确认无标签层级错误,再重新执行构建任务即可解决该解析报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:27:25