【问题标题】:Package accessible from more than one module: <unnamed>可从多个模块访问的包:<未命名>
【发布时间】:2019-04-29 11:35:08
【问题描述】:

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

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

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

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

【问题讨论】:

  • 它可能是由您所依赖的项目之一引入的。

标签: java jakarta-ee jmx java-platform-module-system


【解决方案1】:

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

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

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

Eclipse 版本:2019-09

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • Java 11。我没有添加 JMX 的依赖项,我知道它是 Java SE 的一部分。
        【解决方案5】:

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

        【讨论】:

        • 那是因为 Java 8 没有模块,即从 Java 9 开始。您不应该使用 Java 8,尝试为 Java 11 或 Java 14 寻找解决方案,因为这些是新支持的版本。老实说,我已经放弃了 Eclipse,如果你买不起 Jakarta EE 的 IDE,VS Code 是不错的免费替代品。
        猜你喜欢
        • 1970-01-01
        • 2021-06-12
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 2020-07-31
        • 1970-01-01
        • 2019-12-08
        • 2019-01-25
        相关资源
        最近更新 更多