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

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?

仍然允许这样做,但是在类路径而不是模块路径(即在未命名模块中)都解决了这两个依赖项.

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

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...