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

18

当尝试在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的依赖时,错误消失了,但是javax.management包不是JAR的一部分。

enter image description here

enter image description here


1
它可能是由你所依赖的项目之一带来的。 - Daniel Gray
4个回答

10

我在从Java 8升级到Java 11时遇到了类似的问题。以下步骤对我有帮助:

  • 右击Eclipse项目 > 属性 > Java Build Path
  • Libraries选项卡中,删除Modulepath下的所有外部JAR文件,并将它们添加到Classpath下(您可以选择所有jar文件并将它们拖到Classpath下)
  • 点击应用和关闭

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

Eclipse版本:2019-09


2

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

按照以下步骤操作: 右键单击项目 -> 构建路径 -> 模块依赖项 -> 只需从Java 11中删除两个模块即可解决问题。


1

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

当您找到该库时,只需将其排除在构建之外即可。

假设这个库有以下依赖关系签名:

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

您只需要像这样从构建中排除它即可:
dependencies {
...
  configurations {
       compile.exclude group: 'lib.group', module: 'lib-name'
  }
...
}

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


-1
你正在使用Java-1.8吗?因为它是默认的包,不需要添加依赖项。

Java 11。我不会添加JMX的依赖项,我知道它是Java SE的一部分。 - Evandro Pomatti

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