在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
我还能做什么?
编辑:
现在它正在工作,我忘记在该项目中生成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?
仍然允许这样做,但是在类路径而不是模块路径(即在未命名模块中)都解决了这两个依赖项.
在以模块化方式创建库时解决此问题的另一种方法是,确保修复导出相同软件包的下游库,这将需要自下而上的迁移,并且您可能必须等待它们在其最新更新中对其进行修复(或检查是否已经退出),然后依靠它们.