可从多个模块访问的包:<未命名>

尝试在 JMX 控制台中注册 MBean 时,我收到以下错误消息:

The package javax.management is accessible from more than one module: <unnamed>, java.management

我正在使用Eclipse,我的项目结构中没有文件。module-info.java

enter image description here

当我注释Java EE API的依赖项时,错误消失了,但该包不是JAR的一部分。javax.management

enter image description here

enter image description here


答案 1

从java 8更新到java 11时,我遇到了类似的问题。下面的步骤帮助了我,

  • 右键单击 Eclipse 项目>属性> Java 构建路径
  • 在“”选项卡中,删除“模块路径”下的所有外部 jar 文件,然后将其添加到“类路径”下(只需选择所有 jar,然后在“类路径”下拖动它们)
  • 单击应用并关闭

注: JRE 系统库将保留在模块路径下。

日食版:2019-09


答案 2

这样做的最佳解决方法是找到导致重复问题的库,因为它提供的包与应用程序中的另一个模块相同。只需浏览 JRE 系统库和项目外部库的项目依赖项,并检查每个库中的包。

找到该库后,只需将其从生成中排除即可。

假设它是一个具有以下依赖项签名的库:

group: 'lib.group', name: 'lib-name', version: notImportant

您所要做的就是将其从构建中排除,如下所示:

dependencies {
...
  configurations {
       compile.exclude group: 'lib.group', module: 'lib-name'
  }
...
}

我在这里回答了一个类似的问题...


推荐