哪里可以找到 Jakarta EE 9 或 10 兼容的 JAXB 参考实现 JAR 文件?

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

所以我有一个小型 JAR 应用程序(不在 Web 容器中运行),它使用在 jdk8 上运行的 JAXB 的一些 javax.* 类。 是时候升级到 jdk17 了,它不随 JAXB 一起提供。 所以我想,很简单,我下载 JAXB 的 jakarta ee 9(或 10)参考实现 jar 文件,将代码 javax.* 切换到 jakarta.* 命名空间,然后我们就可以开始了。 似乎我找不到在哪里可以下载 jakarta ee 9(或 10)中 JAXB 的参考实现 jar 文件。 很明显我错过了一些东西。 有人可以指导我找到解决这个问题的好方法吗?

java jaxb jakarta-migration
2个回答
2
投票

我主要使用 Maven 来处理我的依赖项,但希望这至少有一点帮助。

对于 jaxb 3.x,您可以使用以下 api 依赖项

<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>3.0.1</version>
</dependency>

然后您可以使用以下方法来实现。

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>3.0.0</version>
</dependency>

如果您需要从 xsd 生成类,您可以使用 jaxb2-maven-plugin 3.1.0。它似乎只依赖于 jakarta.xml.bind-api,同时将其余部分作为嵌套依赖项包含在内。

<!-- 
  by default searches schemas from src/main/xsd 
  and binding files from src/main/xjb
-->
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>xjc</id>
            <goals>
                <goal>xjc</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <packageName>com.example.api</packageName>
    </configuration>
</plugin>

不确定 javax.activation


-1
投票

这与问题没有直接关系,但对于想要将包名称

javax
更新为
jakarta
的人来说可能会有所帮助。如果你的项目很大,包含很多类,那么用替换器转换它们会很无聊。相反,您有 2 个选择:

选项1

在项目根文件夹中执行 shell 脚本,让脚本自动为您转换。但是,您必须修改 shell 脚本才能覆盖所有包。

您可以在这篇文章中找到该脚本。

选项2

如果你使用的是Intellij IDEA,那么你很幸运,有一个按钮可以转换所有包。

Refactor > Migrate Packages and Classes > Java EE to Jakarta EE

按照上述路径找到该选项。

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