Java Eclipse氧气:如何指定模块依赖关系

Java Eclipse氧气:如何指定模块依赖关系,java,java-9,eclipse-oxygen,Java,Java 9,Eclipse Oxygen,我试图熟悉Eclipse对Java9模块的支持。我将EclipseOxy与来自市场的Java9支持包和最新的JDK9U180一起使用 问题涉及模块依赖关系以及如何让Eclipse知道它们 我的理解是,在Eclipse中,JPMS模块对应于Eclipse项目。我创建了三个项目,即模块,并添加了必要的模块信息文件: module com.effjava.app { requires com.effjava.support; } module com.effjava.support { ex

我试图熟悉Eclipse对Java9模块的支持。我将EclipseOxy与来自市场的Java9支持包和最新的JDK9U180一起使用

问题涉及模块依赖关系以及如何让Eclipse知道它们

我的理解是,在Eclipse中,JPMS模块对应于Eclipse项目。我创建了三个项目,即模块,并添加了必要的模块信息文件:

module com.effjava.app {
  requires com.effjava.support;
}

module com.effjava.support {
  exports com.effjava.support.hlp;
  exports com.effjava.support.test;
  exports com.effjava.support.user;

  requires transitive com.effjava.util;
}

module com.effjava.util {
  exports com.effjava.util.cbk;
  exports com.effjava.util.reg;
}
它是一个简单的自上而下的依赖链。模块描述符正确;我已经成功地在IntelliJ中设置了相同的模块

我的问题是:如何告诉Eclipse顶部模块依赖于底部模块,例如中间模块
com.effjava.support
依赖于底部模块
com.effjava.util

我确实在模块信息文件中指定了依赖项(via
requires transitive
),Eclipse毫无怨言地接受了该指令。然而,当我编译中间模块
com.effjava.support
时,我看到了一条错误消息。错误消息指出,尽管通过模块
com.effjava.util
导出并且是
module com.effjava.support
所必需的,但包
com.effjava.util.cbk
中的公共类型不可见

为了指定依赖关系,我将底部模块
com.effjava.util
的内容导出到一个jar文件,包括module-info.class。因此,它是一个模块化的jar文件

然后我将模块化jar文件导入
com.effjava.support
模块,并将导入的模块化jar文件添加到构建路径中。无济于事

我在没有导入的情况下尝试了它,只是添加了模块化jar作为外部库。它也不起作用


问题是:如何在Eclipse中正确指定模块依赖关系?

这方面的详细信息仍在进行中。目前,最好通过
Java Build Path>Projects
让您的项目明确地相互依赖(这在一定程度上与模块信息是多余的,但由于模块没有版本控制,您可能仍然需要一个构建系统来管理您的依赖关系)。OTOH,你截图中的错误看起来是假的。如果市场上最新版本(1.1.1.v20170731-0938_BETA_JAVA9)出现这种情况,请在