Java 9 模块和 IntelliJ:如何配置多个模块

问题描述 投票:0回答:1

我正在尝试在 IntelliJ 中创建一个非常简单的具有多个模块的 java 模块项目。

相应的文档位于https://openjdk.org/projects/jigsaw/quick-start#multimodulecompile中的src目录中,每个模块都应该有自己的目录。

所以我这样组织我的项目:

src/easytext.analysis/module-info.java
src/easytext.analysis/com/msantos/pluralsight/java9modules/easytext/analysis/World.java

src/easytext.cli/module-info.java
src/easytext.cli/com/msantos/pluralsight/java9modules/easytext/cli/Main.java

如您所见,IntelliJ 给出错误: 'module-info.java' 已存在于模块中

但是,如果我从命令行编译,我没有问题:

javac --module-source-path src/main/java/ -d out $(find . -name '*.java')

有人可以向我解释为什么 IntelliJ 会给出这个错误(考虑到从 java 的角度来看这是一个有效的结构)以及如何修复它?

提前非常感谢您

项目设置

带有模块的 IntelliJ

定义模块后,编译可以工作,但现在向模块添加依赖项,会发现模块之间无法访问彼此。命令行编译再次正常工作。

模块

easytext.分析模块

module easytext.analysis {
    exports com.msantos.pluralsight.java9modules.easytext.analysis;
}

它将包暴露给世界

easytext.cli 模块

module easytext.cli {
    requires easytext.analysis;
}

它定义了对 easytext.analysis 模块的依赖

但是从图片中我们可以看到,无法访问该包。这是为什么?

java intellij-idea java-9 java-module
1个回答
0
投票

您的设置是一种不寻常的设置,因为您希望在单个 Maven 模块中包含多个 Java 模块。这可能会导致 IntelliJ 出错,因为它将 Maven 模块映射到 IntelliJ 模块。 “模块”的这三种用途是三种不同的东西,这当然没有帮助。

如果您打算稍后将 Maven 模块打包到单个 jar 中,请注意 Java 模块系统不允许每个 jar 文件包含多个模块。我建议将您的项目转变为多模块 Maven 项目,每个 Java 模块都成为专用的 Maven 模块。

© www.soinside.com 2019 - 2024. All rights reserved.