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

Java 可从多个模块访问包:<;未命名>;,java,jakarta-ee,jmx,java-platform-module-system,Java,Jakarta Ee,Jmx,Java Platform Module System,尝试在JMX控制台中注册MBean时,我收到以下错误消息: The package javax.management is accessible from more than one module: <unnamed>, java.management 可以从多个模块访问javax.management包:,java.management 我使用的是Eclipse,在我的项目结构中没有module info.java文件 当我注释我对JavaEEAPI的依赖关系时,错误消失了,

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

The package javax.management is accessible from more than one module: <unnamed>, java.management
可以从多个模块访问javax.management包:,java.management
我使用的是Eclipse,在我的项目结构中没有
module info.java
文件

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


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

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

  • 右键单击Eclipse项目>属性>Java构建路径
  • 选项卡中,删除模块路径下的所有外部jar文件并将其添加到类路径下(您只需选择所有jar并将其拖动到类路径下
  • 单击应用并关闭
注意:JRE系统库将保留在模块路径下


Eclipse版本:2019-09

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

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

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

假设它是具有此依赖项签名的库:

group: 'lib.group', name: 'lib-name', version: notImportant
您所要做的就是将其从构建中排除,如下所示:

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

我回答了一个类似的问题…

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

遵循以下步骤
右键单击project->build path->Module dependency->只需从java11中删除两个模块,这会有所帮助。

java11。我没有为JMX添加依赖项,我知道它是JavaSE的一部分。它可能是由您所依赖的一个项目引入的。这是因为Java8没有模块,这是从Java9开始的。您不应该使用Java8,而应该尝试为Java11或Java14找到一个解决方案,因为它们是新支持的版本。老实说,我已经放弃了Eclipse,如果您负担不起Jakarta EE的IDE,VS代码是一个很好的免费选择。