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

升级至Java 17与JAXB 3时遇Jakarta XML Schema缺失错误求助

排查JAXB 3升级时jaxb30-maven-plugin的TypeNotPresentException错误

这个错误的核心原因是插件依赖版本与JAXB 3的API规范不匹配,具体问题如下:

  • 你使用的是适配JAXB 3.x的jaxb30-maven-plugin,但插件依赖里引入了JAXB 2.3.3版本的jaxb-runtime。JAXB 3.x已经将所有API从javax.xml.bind包迁移到了jakarta.xml.bind包,XmlSchema类现在属于jakarta.xml.bind.annotation,而JAXB 2.x的依赖中完全没有这个包下的类,导致反射时找不到类型抛出异常。
  • 同时你引入的jakarta.activation版本1.2.1过于老旧,不符合Jakarta EE 9+的规范要求,和JAXB 3.x不兼容。

修正后的插件配置如下,重点更新依赖部分:

<plugin>
    <groupId>com.evolvedbinary.maven.jvnet</groupId>
    <artifactId>jaxb30-maven-plugin</artifactId>
    <version>0.15.0</version>
    <configuration>
        <locale>en</locale>
        <extension>true</extension>
    </configuration>
    <executions>
        <execution>
            <id>Generate Import Sources</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <schemaLanguage>XMLSCHEMA</schemaLanguage>
                <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
                <schemaIncludes>
                    <include>/Import_v1.xsd</include>
                </schemaIncludes>
                <generatePackage>com.company.project.v1</generatePackage>
                <generateDirectory>${basedir}/target/jaxb</generateDirectory>
                <bindingIncludes>
                    <bindingInclude>Import_v1.xjb</bindingInclude>
                </bindingIncludes>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <!-- 替换为JAXB 3.x版本的runtime -->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>3.0.2</version>
        </dependency>
        <!-- 更新为适配Jakarta EE 9的activation版本 -->
        <dependency>
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>
</plugin>

额外注意事项:

  • 检查项目中其他与JAXB相关的依赖,确保全部从javax.xml.bind迁移到jakarta.xml.bind,避免混合依赖导致冲突。
  • 如果你的绑定文件(.xjb)中使用了javax.xml.bind相关的命名空间,需要同步修改为jakarta.xml.bind的命名空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:31