在Eclipse中定义一个Java9的多模块项目

Define a Java 9 multi-moduled project in Eclipse

我正在试用 Java 9 Jigsaw 模块系统(还没有模块经验),想用它来封装我的项目中的 类,但它令人困惑。

根据this article,一个项目中应该可以有多个模块。我在 Eclipse Oxygen(支持 Java 9)中新建了一个项目,其结构与文章中所示的相同。但是Eclipse一直告诉我一个项目不能超过一个module-info.java

我真的不知道如何告诉 Eclipse 它应该使用 "multi-module-mode"。我真的很感激不必为每个模块创建一个新项目。

这个有效:

这不是:

但根据 this article 类似的东西应该有效:

用 Eclipse 部署模块化项目怎么样?关于新的 jmod 扩展没有什么可看的。我是否仍像以前一样将其导出为可运行的 JAR 文件?

请注意,我的问题涉及使用 IDE(没有命令行,我的意思是使用 IDE 应该是可能的,对吧?)谢谢你启发我。

目前,Eclipse 要求您为每个模块创建一个单独的项目(例如,因为每个模块都有自己的 Java 构建路径)。

要理解此设计决策,请考虑 Java 模块对应于 OSGi 包/Eclipse 插件,并且每个 bundle/plug-in 始终有一个单独的项目。如果您来自 Maven 世界,您可能会期望更深的文件夹结构。但是模块是独立的,将多个模块组合到一个项目中只会增加一个额外的文件夹级别,没有任何意义。但是,如果您需要额外的文件夹级别,Eclipse 支持嵌套项目和所谓的工作集。

计划在 2019 年 3 月 20 日的 Eclipse 2019-03 (4.11) 中将 模块导出为图像(请参阅 Eclipse bug 518445). Exporting modules as JARs that can be used on the modulepath (-m) already works (see my video)。

我不知道这个问题是否仍然需要答案,但您可以通过简单地删除构建路径上的所有源文件夹来解决这个问题。至少这适用于 Eclipse 2021-12 版本。

如您所见,这是来自官方 Gradle 指南的演示项目,它有多个模块。每个模块都有自己的 module-info.java.

project structure in IntelliJ IDEA

如果我在 Eclipse 中打开这个项目,它会给我 'duplicated entries on module-info.java' 错误。

Eclipse shows the error

但是如果我删除构建路径上的所有源文件夹,错误就消失了,项目可以构建并且 运行 没有问题。

project properties: Java build path

唯一的问题是您必须使用 Gradle 构建项目,以便它会生成每个模块的 .jar,并且您必须稍后将它们包含在库中。

include all the .jar in libraries

我认为这可能与上面howlger提到的解决方案相同。