【问题标题】:How to add maven dependencies of json to modules in >= Java 9如何将json的maven依赖项添加到> = Java 9中的模块
【发布时间】:2019-01-14 14:04:03
【问题描述】:

在 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。

【问题讨论】:

    标签: java json maven java-platform-module-system module-info


    【解决方案1】:

    所以在两个依赖项目中都有一个名为 javax.json.stream 并且由于拼图模块系统,这是不允许的 没有了吗?

    这仍然是允许的,但是这两个依赖项都在 classpath 而不是 modulepath 上得到解决,即在 未命名的模块中.

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

    【讨论】:

    • 我将 maven 依赖项放在类路径上,但现在找不到 org.glassfish 的包(jar 存在于 maven 依赖项中)。这怎么可能? (javax.json-api-1.1.4 已经更新,并且有一个module-info.java 文件,一切正常,但是javax.json-1.1.4.jar 没有。)
    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2013-10-12
    • 2019-04-11
    • 1970-01-01
    相关资源
    最近更新 更多