相关疑难解决方法(0)

使用Java EE API替换已弃用的JPMS模块

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

  • javax.activation包的java.activation
  • java.corbajavax.activity,javax.rmi,javax.rmi.CORBA,和org.omg.*
  • javax.transaction包的java.transaction
  • 包含所有javax.xml.bind.*包的java.xml.bind
  • java.xml.wsjavax.jws,javax.jws.soap,javax.xml.soap,和所有javax.xml.ws.*
  • javax.annotation包的java.xml.ws.annotation

哪些维护的第三方工件提供了这些API?它们提供这些API或它们必须提供的其他功能并不重要 - 重要的是,它们是这些模块/包的直接替代品吗?

为了更容易收集知识,我回答了迄今为止我所知道的并将答案作为社区维基.我希望人们能够扩展它,而不是写出自己的答案.


在您投票结束之前:

  • 是的,已经有一些关于单个模块的问题,这个问题的答案当然会复制这些信息.但AFAIK没有任何一点可以了解所有这些,我认为这些有很大的价值.
  • 提出图书馆建议的问题通常被认为是偏离主题的,因为"他们倾向于吸引自以为是的答案和垃圾邮件",但我不认为这适用于此.明确描述了一组有效的库:它们必须实现特定的标准.除此之外别无其他,所以我没有看到很多意见和垃圾邮件的风险.

java java-ee java-9 java-module

150
推荐指数
6
解决办法
5万
查看次数

--add-modules仅用于编译

我正在使用maven和构建我的项目.我在我的pom.xml文件中添加了:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <compilerArgs>
            <arg>--add-modules</arg>
            <arg>java.xml.bind</arg>
        </compilerArgs>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是,为了运行应用程序,我必须像这样运行它:

java -jar --add-modules java.xml.bind my-app.jar
Run Code Online (Sandbox Code Playgroud)

有没有办法构建应用程序,从命令行运行而不是--add-modules java.xml.bindjava命令行参数?

java jaxb maven maven-compiler-plugin java-9

27
推荐指数
1
解决办法
3万
查看次数

如何表达maven对Java ee功能的依赖以转换到Java 9?

我们使用maven并拥有依赖于其他内部工件的工件.我正在迁移到,并且打算首先将所有内容迁移到Java 9而不模块化代码(即在未命名的模块中).

我遇到的问题是我们依赖java.xml.bind,现在不包含在默认模块中.是否有一种"正确"的方式来表达对java.xml.bindMaven的依赖?

java jaxb maven java-platform-module-system java-9

19
推荐指数
3
解决办法
1万
查看次数

Java 9:Eclipse中无法访问模块java.xml.bind

我将Java 8中的maven项目迁移到Java 9项目而没有任何构建工具Eclipse OxyGen 1a.

所以我的module-info.java看起来像这样:

在此输入图像描述

但java.xml.bind不可访问,虽然它在我的模块路径中:

在此输入图像描述

那么这里有什么问题?

java eclipse java-9 java-module

15
推荐指数
1
解决办法
2万
查看次数