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

本文探讨了在Java8项目中使用Maven时,因javax.json.stream包冲突引发的问题及解决方案。详细介绍了如何通过调整依赖版本和生成module-info.java文件来避免模块系统冲突,确保项目正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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?

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值