在 Java 8 及更早版本中,JAXB 集成在 JVM 本身中,但这种情况在 Java 9 中发生了变化。由于 JVM(Project Jigsaw)的模块化,JAXB 和其他一些内容已从 JDK 中删除。这并不意味着 JAXB 不再受支持,只是它是类路径上需要的另一个依赖项。
\n由于 JavaEE / Jakarta EE 对命名空间进行了重大更改,因此正确的依赖关系坐标取决于使用的企业规范类型。
\n对于 JavaEE 8 -javax.*命名空间 - 正确的依赖关系是:
<dependency>\n <groupId>javax.xml.bind</groupId>\n <artifactId>jaxb-api</artifactId>\n <version>2.3.1</version>\n <scope>provided</scope>\n</dependency>\nRun Code Online (Sandbox Code Playgroud)\n与 JakartaEE 兼容的依赖项 -jakarta.*命名空间 - 是:
<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>\nRun Code Online (Sandbox Code Playgroud)\n
首先开始从 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)
| 归档时间: |
|
| 查看次数: |
35099 次 |
| 最近记录: |