java - 如何将 json 的 Maven 依赖项添加到 >= Java 9 中的模块

标签 java json maven java-platform-module-system module-info

在 java 8 项目中,您只需在 maven 中添加以下依赖项

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1</version>
</dependency>

使用 OpenJDK、Eclipse 2018-12
和 maven 模块,它导致在 module-info.java 中出现错误:

The package javax.json.stream is accessible from more than one module: java.json, org.glassfish.java.json

所以在两个依赖项目中都有一个名为 javax.json.stream 的包,由于拼图模块系统,这不再被允许了?

如何解决这个问题?

编辑:
我将 Maven 依赖项更新为 1.1.4 并将它们放在类路径中。 javax.json-api 有一个 module-info.java 文件并且工作正常,eclipse 不再显示错误。
但是现在找不到实现javax.json(org.glassfish)的包,导致ClassNotFoundException: org.glassfish.json.JsonProviderImpl
< br/> 我还能做什么?

编辑:
它现在可以工作了,我忘了在这个项目中生成一个 module-info.java。

最佳答案

So in both dependency projects there is a package called javax.json.stream and due to jigsaw module system this is not allowed anymore?

这仍然是允许的,但是这两个依赖项都在类路径而不是模块路径上得到解析,即在未命名模块中.

在将库创建为模块化时解决此问题的另一种方法是确保修复导出相同包的下游库,这需要自下而上的迁移,您可能必须等待他们在最新版本中修复它更新(或检查是否已经存在)然后依赖它们。

关于java - 如何将 json 的 Maven 依赖项添加到 >= Java 9 中的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54183017/

相关文章:

java - java中的日期格式

java - 如何将接口(interface)作为泛型类型传递并将其用作注释?

java - 如何在 Java 中使用 JSONObject 设置整数值?

ios - 如何使用swift 3将解析后的json数据保存到数组中

java - 有效地从要使用的类返回 JSONObject

java - 在 Java 中按日期对 ArrayList 进行排序

java - 当您不确定单元名称时如何创建 EntityManager?

Java 文件 : Content not allowed in prolog

java - windows xp 无法安装maven

java堆空间