在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。
答案 0 :(得分:2)
因此在两个依赖项目中都有一个名为 javax.json.stream,由于存在拼图模块系统,因此不允许这样做 不再吗?
这仍然是允许的,但是,这两个依赖关系都在 classpath 而不是 modulepath 上解决,即在 unnamed模块中。
在以模块化方式创建库时,解决此问题的另一种方法是确保修复下游库导出相同的软件包,这将需要自下而上的迁移,您可能必须等待它们在最新版本中对其进行修复。更新(或检查是否已经存在),然后依靠它们。