如何在> = Java 9中将json的maven依赖项添加到模块中

时间:2019-01-14 14:04:04

标签: java json maven jigsaw 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中出现错误:

  

可以从多个模块中访问javax.json.stream包:   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

我还能做什么?

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

1 个答案:

答案 0 :(得分:2)

  

因此在两个依赖项目中都有一个名为   javax.json.stream,由于存在拼图模块系统,因此不允许这样做   不再吗?

这仍然是允许的,但是,这两个依赖关系都在 classpath 而不是 modulepath 上解决,即在 unnamed模块中

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