从 javax 迁移到 jakarta ee

Migrate from javax to jakarta ee

提问人:user1391606 提问时间:5/8/2022 更新时间:5/13/2022 访问量:18840

问:

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

雅加达-EE

评论

0赞 Pasi Österman 5/10/2022
Jakarta-EE 被划分为一堆不同的规范,因此如果您知道您的应用程序使用哪一个(例如 Jaxb.CDI 或持久性)。除了使用应用服务器之外,还有任何包含所有 Jakarta-EE API 和参考实现的多合一包。
0赞 user1391606 5/12/2022
嗨,感谢您的评论 我们能够下载javax.activation-1.2.0.jar,jaxb-api-2.3.0.jar,jaxb-core-2.3.0.jar,jaxb-impl-2.3.0.jar文件基于其他一些堆栈溢出问题。我认为有一个参考实现,您可以从中下载 *.jars,而不是下载例如 GlassFish 或 TomEE,然后尝试找出您需要哪些 *.jar 文件!?还是在非 Web 应用程序中使用 javax(J2EE) 包是错误的?

答:

1赞 Pasi Österman 5/13/2022 #1

我主要使用 maven 来处理我的依赖项,但希望这至少会有所帮助。

对于 jaxb 3.x,您可以使用以下 api-dependency

<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,同时将rest作为嵌套依赖项包含在内。

<!-- 
  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赞 Tony Yip 5/13/2022
检查 javax.activation 的 stackoverflow.com/questions/46493613/...