首页 > 解决方案 > Java 11 Eclipse 找到自动模块,Maven 没有

问题描述

我正在尝试将一个有 15 年历史的 Maven 多模块项目升级到 Java 11,以及 Java 9 中引入的模块系统。由于该项目是使用 Maven 构建的,因此所有依赖项都非常清楚。首先,我想使用自动模块名称来执行此操作,以免也引入升级的工件(如果不是绝对需要的话)。

Eclipse 在这个过程中非常有帮助,自动完成 module-info.java 中的自动模块名称。例如:

requires dom4j;

但是,如果我使用 Maven 进行编译,我会收到有关它无法找到 Eclipse 刚刚在其中自动完成的模块的错误。

module-info.java:[29,18] module not found: dom4j

我正在使用 Maven 的编译器插件 3.7.0(3.8.0 根据https://jira.apache.org/jira/browse/MCOMPILER-355给出 NullPointerException )我怀疑 Maven 将 jars 设置在类路径而不是模块路径,但编译器的插件调试输出没有记录。

如何让 Maven 正确处理这些模块?

标签: mavenjava-modulemaven-compiler-plugin

解决方案


我遇到了同样的问题。添加

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
        </plugin>
    </plugins>
</build>

到我的pom为我解决了这个问题......


推荐阅读