Java 11使用Maven模型时未命名模块问题

6

我正在尝试将一个工具从Java 8迁移到Java 11。
我完成了第一步,使其在没有模块的情况下运行,并且代码编译成功。

现在我正在尝试添加module-info.java,但由于我的工具中使用的库,我第一次遇到问题。其中一些库已与Java 11兼容(例如Lombok),但另一些库不兼容,因此我正在尝试使用requires和artifactId名称导入它们。
然而,由于我的Maven模型和Maven模型构建器依赖项,我似乎卡住了,因为在构建时出现以下错误:

[ERROR] the unnamed module reads package org.apache.maven.model.merge from both maven.model.builder and maven.model
[ERROR] module maven.model.builder reads package org.apache.maven.model.merge from both maven.model.builder and maven.model
[ERROR] module maven.model reads package org.apache.maven.model.merge from both maven.model.builder and maven.model

这种错误该怎么办?我似乎需要同时使用两个(如果我注释其中一个,仍然无法构建)。这是否意味着由于我的依赖关系,我无法向我的工具添加模块?
提示:库已设置为最新版本(即3.6.3)。

模块系统不允许拆分包。您的依赖项是否有更新版本,可能已经解决了这个问题? - Slaw
我尝试升级到最新版本(3.6.3),但问题仍然存在。 - Xendar
我也遇到了同样的问题。我通过以下方式进行排除编译,但这会导致运行时问题,不知道是否有其他模块可以排除?实现('org.apache.maven:maven-resolver-provider:3.6.3'){ 排除组:'org.apache.maven.model.merge',模块:'maven-model-merge' } - Tharik Kanaka
好吧,我没能解决这个问题,所以我放弃了转移到 JPMS 的计划... 真遗憾。 - Xendar
1个回答

0

我使用maven-exec-plugin来“修复”这个问题,就像this question中的答案所描述的那样。

编辑:通过maven-exec-plugin运行主类时,编译器不再因冲突而抱怨(原因未知)。


我不确定我理解exec插件和这个拆分包问题之间的联系。 - Xendar
IntelliJ抱怨有一些导出到同一模块的包(就像你在问题中描述的那样),我似乎无法解决它。然而,当我通过exec插件运行主类时,这些冲突的导出就不再存在了,然后你可以通过插件运行程序。这是一个肮脏的“解决方案”,但它“有效”。 - Aron Hoogeveen
哦,这真是令人惊讶! - Xendar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接