Java 可从多个模块访问包:<;未命名>;
尝试在JMX控制台中注册MBean时,我收到以下错误消息: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的依赖关系时,错误消失了,
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并将其拖动到类路径下)
- 单击应用并关闭
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代码是一个很好的免费选择。