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

如何为jaxb2-maven-plugin生成的Java Bean添加后缀并解决绑定错误

问题解决:JAXB schemaBindings 关联报错修复

错误原因

<jaxb:schemaBindings> 不能直接放在根 <jaxb:bindings> 节点下,它必须明确关联到具体的XML Schema(XSD)文件,否则JAXB无法确定该命名转换规则要应用到哪些Schema上,从而抛出"The 'jaxb:schemaBindings' customization is not associated with any schema element"错误。

解决方案

根据你的需求(给所有生成Bean添加后缀),修改bindings.xjb文件,将schemaBindings嵌套在指定Schema的绑定节点中,具体有两种实现方式:

方式1:全局应用到所有XSD文件

如果需要给src/main/resources/xsd目录下的所有XSD生成的类统一添加后缀,调整绑定文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        version="3.0">

    <jaxb:globalBindings>
        <xjc:superClass name="my.project.xml.MyXmlObject"/>
        <jaxb:javaType name="long" xmlType="xs:nonNegativeInteger"
                       parseMethod="my.project.xml.TypeConverter.parseLong"
                       printMethod="my.project.xml.TypeConverter.printLong"/>
    </jaxb:globalBindings>

    <!-- 绑定到xsd目录下的所有XSD文件,应用命名转换规则 -->
    <jaxb:bindings schemaLocation="xsd/*.xsd">
        <jaxb:schemaBindings>
            <jaxb:package name="my.project"/>
            <jaxb:nameXmlTransform>
                <jaxb:elementName prefix="My" suffix="Dto"/>
                <jaxb:typeName prefix="My" suffix="Dto"/>
            </jaxb:nameXmlTransform>
        </jaxb:schemaBindings>
    </jaxb:bindings>

</jaxb:bindings>
  • schemaLocation="xsd/*.xsd":路径相对于bindings.xjb的位置(当前在src/main/resources),匹配目标目录下所有XSD文件。

方式2:针对单个XSD文件配置

如果只需要给特定XSD生成的类添加后缀,替换为具体的Schema文件名即可:

<!-- 示例:仅给user_schema.xsd应用命名规则 -->
<jaxb:bindings schemaLocation="xsd/user_schema.xsd">
    <jaxb:schemaBindings>
        <jaxb:package name="my.project"/>
        <jaxb:nameXmlTransform>
            <jaxb:elementName prefix="My" suffix="Dto"/>
            <jaxb:typeName prefix="My" suffix="Dto"/>
        </jaxb:nameXmlTransform>
    </jaxb:schemaBindings>
</jaxb:bindings>

验证

修改完成后,执行Maven命令重新生成Java类:

mvn jaxb2:xjc

检查生成的类文件,确认类名已带上指定的My前缀和Dto后缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:57:28