如何将 json 的 Maven 依赖项添加到 >= Java 9 中的模块
How to add maven dependencies of json to modules in >= Java 9
在java8个项目中你只需在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 模块,它导致在模块中出现错误-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
有一个模块-info.java 文件并且工作正常,eclipse 不再显示错误。
但是现在找不到实现javax.json (org.glassfish)
的包,导致ClassNotFoundException: org.glassfish.json.JsonProviderImpl
我还能做什么?
编辑:
它现在可以工作了,我忘了在这个项目中生成一个模块-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?
这仍然是允许的,但是 这两个依赖项都在 classpath 而不是 modulepath 即在 未命名模块中 .
在将库创建为模块化时解决此问题的另一种方法是确保修复导出相同包的下游库,这需要自下而上的迁移,您可能必须等待他们修复它他们的最新更新(或检查是否已经发布)然后依靠他们。
在java8个项目中你只需在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 模块,它导致在模块中出现错误-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
有一个模块-info.java 文件并且工作正常,eclipse 不再显示错误。
但是现在找不到实现javax.json (org.glassfish)
的包,导致ClassNotFoundException: org.glassfish.json.JsonProviderImpl
我还能做什么?
编辑:
它现在可以工作了,我忘了在这个项目中生成一个模块-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?
这仍然是允许的,但是 这两个依赖项都在 classpath 而不是 modulepath 即在 未命名模块中 .
在将库创建为模块化时解决此问题的另一种方法是确保修复导出相同包的下游库,这需要自下而上的迁移,您可能必须等待他们修复它他们的最新更新(或检查是否已经发布)然后依靠他们。