Java 17 项目使用的 JAXB Jar 文件是什么

问题描述 投票:0回答:5

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

java java-8 jaxb java-17
5个回答
5
投票

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

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

对于 JavaEE 8 -

javax.*
命名空间 - 正确的依赖项是:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
    <scope>provided</scope>
</dependency>

并且与 JakartaEE 兼容的依赖项 -

jakarta.*
命名空间 - 是:

<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
</dependency>

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>

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

喜欢:

<dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.8</version> </dependency>



0
投票
hisrc-higherjaxb-sample-jaxbplugins (zip)

中使用的 JAXB 依赖项,这是一个使用 JDK 17 构建的 JAXB 4.x 示例项目。重点关注下面的依赖项 hisrc-basicjaxb-runtime,在此依赖树,作为您问题的答案。 org.patrodyne.jvnet:hisrc-higherjaxb-sample-jaxbplugins:jar:2.1.0 +- org.patrodyne.jvnet:hisrc-basicjaxb-runtime:jar:2.1.0:compile | +- jakarta.activation:jakarta.activation-api:jar:2.1.1:compile | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0:compile | +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.2:compile | | \- org.glassfish.jaxb:jaxb-core:jar:4.0.2:compile | | +- org.eclipse.angus:angus-activation:jar:2.0.0:runtime | | +- org.glassfish.jaxb:txw2:jar:4.0.2:compile | | \- com.sun.istack:istack-commons-runtime:jar:4.1.1:compile | +- commons-io:commons-io:jar:2.11.0:compile | \- org.slf4j:slf4j-api:jar:2.0.6:compile \- org.patrodyne.jvnet:hisrc-basicjaxb-testing:jar:2.1.0:test +- org.junit.jupiter:junit-jupiter-api:jar:5.9.2:test | +- org.opentest4j:opentest4j:jar:1.2.0:test | +- org.junit.platform:junit-platform-commons:jar:1.9.2:test | \- org.apiguardian:apiguardian-api:jar:1.1.2:test \- xmlunit:xmlunit:jar:1.6:test

注意:JAXB 
API

RIZIP4.x 版本使用适用于 Jakarta EE 10 的最新 JAXB Schema Binding 3.0 规范


0
投票

<dependencies> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.3.7</version> </dependency> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.8</version> </dependency> </dependencies>



0
投票

<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.4</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>4.0.0</version> </dependency>

© www.soinside.com 2019 - 2024. All rights reserved.