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

如何使用xjc从.XSD文件生成Java类?新版本JDK无xjc如何解决

Unable to locate an executable at "/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/xjc" (-1)

问题原因

JDK 9 及更高版本已经将JAXB(Java Architecture for XML Binding)相关组件包括xjc工具从JDK内置模块中移除,所以你使用的JDK 11环境默认不存在xjc可执行文件,触发上述路径找不到报错。

本地快速安装使用xjc的方案

下面提供三种常用方案,可根据你的使用场景选择:

方案1:通过Maven插件执行(无需单独配置环境变量,推荐)

适合已经使用Maven作为项目构建工具的场景,无需单独下载安装xjc工具:

  • 在项目pom.xml的<build>→<plugins>节点下添加如下配置:
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>generate-java-from-xsd</id>
            <goals>
                <goal>xjc</goal>
            </goals>
            <configuration>
                <!-- 替换为你自己的xsd文件路径 -->
                <sources>
                    <source>src/main/resources/your_schema.xsd</source>
                </sources>
                <!-- 替换为生成Java类的目标包名 -->
                <packageName>com.yourcompany.generated</packageName>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 终端执行生成命令:mvn jaxb2:xjc
  • 生成的Java类默认输出到target/generated-sources/jaxb目录下

方案2:下载独立xjc可执行包(无构建工具依赖)

适合需要单独使用xjc命令、不想依赖项目构建工具的场景:

  • 搜索并下载JAXB官方独立发布包jaxb-ri,选择2.3.1及以上版本即可兼容JDK 11+
  • 解压下载的zip包后,将解压得到的bin目录添加到系统环境变量PATH中
  • 验证安装是否成功:终端执行xjc -version,正常输出版本信息即为安装成功
  • 生成Java类命令示例:xjc 你的xsd文件路径 -p 目标包名 -d 输出目录路径

方案3:通过Gradle执行

适合使用Gradle作为项目构建工具的场景:

  • 在项目build.gradle中添加如下配置:
plugins {
    id 'java'
    id 'org.openjax.jaxb' version '0.9.0'
}

jaxb {
    xjc {
        // 替换为xsd文件所在目录路径
        srcDir = 'src/main/resources/schema'
        // 替换为生成类的输出根路径
        destDir = 'src/main/java'
        // 替换为生成类的目标包名
        packageName = 'com.yourcompany.generated'
    }
}
  • 终端执行生成任务:gradle xjc
注意事项

如果生成Java类后,项目运行时提示JAXB相关类找不到,需要额外引入JAXB运行时依赖,Maven依赖示例如下:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.6</version>
    <scope>runtime</scope>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:57:03