Java 17 项目使用的 JAXB Jar 文件有哪些

Anj*_*gha 10 java jaxb java-8 java-17

我正在将我的项目从 Java 8 升级到 Java 17。我的项目使用 JAXB 相关的 JAR 文件。但是,我在编译项目时遇到很多错误,其中大部分与 JAXB 有关。任何人都可以帮助我处理与 JAXB 相关的 JAR 文件及其版本,我应该在 Java 17 项目中使用它们吗?另外,请建议我应该使用的兼容 JAVA EE 版本。

zfo*_*rgo 9

在 Java 8 及更早版本中,JAXB 集成在 JVM 本身中,但这种情况在 Java 9 中发生了变化。由于 JVM(Project Jigsaw)的模块化,JAXB 和其他一些内容已从 JDK 中删除。这并不意味着 JAXB 不再受支持,只是它是类路径上需要的另一个依赖项。

\n

由于 JavaEE / Jakarta EE 对命名空间进行了重大更改,因此正确的依赖关系坐标取决于使用的企业规范类型。

\n

对于 JavaEE 8 -javax.*命名空间 - 正确的依赖关系是:

\n
<dependency>\n    <groupId>javax.xml.bind</groupId>\n    <artifactId>jaxb-api</artifactId>\n    <version>2.3.1</version>\n    <scope>provided</scope>\n</dependency>\n
Run Code Online (Sandbox Code Playgroud)\n

与 JakartaEE 兼容的依赖项 -jakarta.*命名空间 - 是:

\n
<dependency>\n    <groupId>jakarta.xml.bind</groupId>\n    <artifactId>jakarta.xml.bind-api</artifactId>\n    <version>4.0.0</version>\n    <scope>provided</scope>\n</dependency>\n
Run Code Online (Sandbox Code Playgroud)\n


Gui*_*sta 1

首先开始从 Java 8 迁移到 Java 11

然后阅读示例文章,例如在 Java 11 中删除 Java EE 和 CORBA 模块( https://docs.oracle.com/en/java/javase/11/migrate/index.html#JSMIG-GUID-561005C1-12BB-455C -AD41-00455CAD23A6 ) :JAXB 和 JAX-WS 不再与 JDK 捆绑在一起。

或者这个:https://learn.microsoft.com/java/openjdk/transition-from-java-8-to-java-11

因此,您需要添加 JAX-B 等。

使用 Maven:

<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然而,实施可能也是必要的。

喜欢 :

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)