【问题标题】:Java 11 unnamed module issue when using Maven model使用 Maven 模型时的 Java 11 未命名模块问题
【发布时间】:2020-07-09 22:43:36
【问题描述】:

所以,我正在尝试将工具从 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)

【问题讨论】:

  • 模块系统不允许拆分包。是否有更新版本的依赖项可以解决问题?
  • 我尝试升级到最新版本(3.6.3),但问题仍然存在
  • 我也面临同样的问题。我通过排除以下内容进行编译,但它会导致运行时问题,只是想知道是否还有其他模块要排除?实现('org.apache.maven:maven-resolver-provider:3.6.3'){排除组:'org.apache.maven.model.merge',模块:'maven-model-merge'}
  • 好吧,我没能解决这个问题,所以我放弃了搬到 JPMS... 真可惜

标签: java java-11 java-module


【解决方案1】:

我使用 maven-exec-plugin “修复”了这个问题,如this question 的回答中所述。

编辑:当通过 maven-exec-plugin 运行主类时,编译器(出于某种我不知道的原因)不再抱怨冲突。

【讨论】:

  • 我不确定我理解 exec 插件和这个拆分包问题之间的联系
  • 好吧,IntelliJ 抱怨了一些导出到同一模块的软件包(正如您在问题中所描述的那样),我似乎无法修复它。但是,当我通过 exec 插件运行主类时,那些冲突的导出不再存在,然后您可以通过插件运行程序。这是一个肮脏的“解决方案”,但它“有效”
  • 哦,这太令人惊讶了!
猜你喜欢
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 2019-07-02
  • 1970-01-01
  • 2018-01-26
相关资源
最近更新 更多