Java EE API的替代方案用于已弃用的JPMS模块

292

Java 9 弃用了六个包含Java EE API的模块,它们即将被删除:

  • java.activation 包含 javax.activation
  • java.corba 包含 javax.activityjavax.rmijavax.rmi.CORBAorg.omg.*
  • java.transaction 包含 javax.transaction
  • java.xml.bind 包含所有 javax.xml.bind.*
  • java.xml.ws 包含 javax.jwsjavax.jws.soapjavax.xml.soap 和所有 javax.xml.ws.*
  • java.xml.ws.annotation 包含 javax.annotation

哪些维护的第三方工件提供了这些API?它们提供这些API的好坏或其他功能并不重要,重要的是,它们是否可以直接替换这些模块/包?

为了更容易地收集知识,我已回答了我所知道的,并将答案作为社区Wiki。我希望人们能扩展它,而不是写自己的答案。


在你投票关闭之前:

  • 是的,已经有一些关于单个模块的问题以及对这个问题的回答会重复这些信息。但据我所知,没有一个单一的地方可以了解所有这些信息,我认为这有很大的价值。
  • 通常认为询问库推荐的问题是不适合的,因为“它们往往会吸引有意见的答案和垃圾邮件”,但我认为这里并不适用。有效库的集合清晰地描绘出来:它们必须实现特定的标准。除此之外,没有其他的要求,因此我认为风险很小,不会有意见和垃圾邮件。

9
大多数这些项目都被转移至 https://github.com/javaee,并在 JEP 320: Remove the Java EE and CORBA Modules 中提供了一些具体链接。 - Naman
1
请参阅2018年5月14日InfoWorld文章,Java路线图:Eclipse的Jakarta EE企业Java正在成形,作者是Paul Krill。副标题:Eclipse基金会概述了将组成新的云原生、微服务友好型企业Java努力的39个项目,以及GlassFish将如何发展。 - Basil Bourque
2
从JDK 11开始,它已被删除。如果您正在使用jdk 9或以上版本,则最好直接添加依赖项,而不是使用"--add-modules java.xml.bind"这种东西。 - Anver Sadhat
11个回答

1
我发现解决JAXB相关问题最简单的方法是在我的根POM或BOM中使用依赖管理:
    <project ...>
      <dependencyManagement>
        <dependencies>
          <!-- ... -->
          <!-- Gone from jvm in java11 -->
          <dependency>
          <groupId>com.sun.xml.bind</groupId>
          <artifactId>jaxb-ri</artifactId>
          <version>2.4.0-b180830.0438</version>
          <scope>import</scope>
          <type>pom</type>
        </dependency>
        <!-- ... -->
      </dependencies>
    </dependencyManagement>
    </project>

在编译JDK11时失败的模块中:

    <!-- ... -->
    <dependencies>
      <!-- Gone from jvm in java11 -->
      <dependency>
         <groupId>javax.xml.bind</groupId>
         <artifactId>jaxb-api</artifactId>
      </dependency>
      <dependency>
         <groupId>com.sun.xml.bind</groupId>
         <artifactId>jaxb-impl</artifactId>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>org.glassfish.jaxb</groupId>
         <artifactId>jaxb-runtime</artifactId>
         <scope>runtime</scope>
      </dependency>
      <!-- ... -->
    </dependencies>  
    <!-- ... -->

此外,将org.jvnet.jaxb2.maven2:maven-jaxb2-plugin的版本更新为0.14.0解决了我所有的jaxb生成问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接