添加java 9系统模块在eclipse中编译

alo*_*ale 7 java eclipse java-9

我有一些遗留的Java代码,即:

package org.alo.test.j9;
import javax.activation.DataHandler;   // in java.activation module
import javax.annotation.PostConstruct; // in java.xml.ws.annotation module
public class OldClass {
    public static void main(String[] args) {
        DataHandler dh = new DataHandler(null, null);
        System.out.println(dh);
    }
}
Run Code Online (Sandbox Code Playgroud)

这尚未模块化,因此需要使用--add-modulesJava 9进行编译.

$ javac -version
javac 9
$ javac org/alo/test/j9/OldClass.java
src/org/alo/test/j9/OldClass.java:3: error: package javax.activation is not visible
import javax.activation.DataHandler;   // in java.activation module
            ^
  (package javax.activation is declared in module java.activation, which is not in the module graph)
src/org/alo/test/j9/OldClass.java:4: error: package javax.annotation is not visible
import javax.annotation.PostConstruct; // in java.xml.ws.annotation module
            ^
  (package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph)
2 errors
Run Code Online (Sandbox Code Playgroud)

我需要添加我正在使用的模块才能成功编译:

$ javac org/test/OldClass.java --add-modules=java.activation,java.xml.ws.annotation
Run Code Online (Sandbox Code Playgroud)

我想在Eclipse(使用Oxygen.1a)中使用Java 9编译它.但是我得到了The import javax.activation cannot be resolved编译错误.

如何告诉eclipse编译器添加这些模块?我没有在Eclipse文档中找到任何有关它的提示.

在这里,您可以找到我正在测试的简单eclipse项目.

Ste*_*ann 3

这些功能的完整文档仍然需要编写,但已经在Photon M3 的 New & Noteworthy (工作正在进行中)中开始。您正在寻找的功能在以开头的段落中提到

在“内容”选项卡上,可以通过从左到右移动模块来包含或排除 JRE 系统库等容器内的各个模块,反之亦然...

--add-modules该对话框选项卡结合了和的效果--limit-modules

编辑:在 Eclipse 2019-06 中,上述 UI 已被修改。最新的文档可以在在线帮助中找到。