可通过多个模块访问软件包:<未命名>

时间:2019-04-29 11:35:08

标签: java java-ee jmx jigsaw

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

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

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

http://hackage.haskell.org/package/ClassyPrelude-0.1/docs/Prelude-Math.html

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

enter image description here

enter image description here

5 个答案:

答案 0 :(得分:1)

从Java 8更新到Java 11时,我遇到了类似的问题。

  • 右键单击Eclipse项目>属性> Java构建路径
  • 标签中,删除 Modulepath 下的所有外部jar文件,并在 Classpath 下添加它们(您可以选择所有jar和将它们拖到 Classpath )下
  • 点击应用并关闭

注意:JRE系统库将保留在 Modulepath 下。

Eclipse版本:2019-09

答案 1 :(得分:0)

您是否正在使用Java-1.8?因为它是默认程序包,所以无需为此添加依赖项。

答案 2 :(得分:0)

我正在使用java11,切换回Java 8后帮助我解决了Java构建路径中的这些问题。

答案 3 :(得分:0)

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

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

说它是一个带有这个依赖签名的库:

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

你所要做的就是像这样从构建中排除它:

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

我回答了一个类似的问题 here ...

答案 4 :(得分:0)

如果您在 Java 11 中遇到同样的问题,只需删除 JRE 11(java.xml、java.xml.crypto)中的模块依赖即可。

按照以下步骤操作 右键单击项目 -> 构建路径 -> 模块依赖 -> 只需从 java11 中删除两个模块就可以了。