Eclipse Oxygen:如何指定模块依赖项

时间:2017-08-03 10:00:39

标签: java java-9 eclipse-oxygen

我正在努力熟悉Eclipse对Java 9模块的支持。我使用Eclipse Oxygen和市场上的Java 9支持包以及最新的JDK 9 u180。

问题涉及模块依赖性以及如何让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

我确实在module-info文件中指定了依赖项(通过requires transitive),Eclipse接受了该指令而没有投诉。但是当我编译中间模块com.effjava.support时,我看到一条错误消息。错误消息显示,com.effjava.util.cbk包中的公开类型不可见,尽管由模块com.effjava.util导出且module com.effjava.support需要。

screenshot showing project structure and compiler error message

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

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

screenshot of build path

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

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

0 个答案:

没有答案