我有一些遗留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);
}
}
尚未模块化,因此需要使用--add-modules
使用Java 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
我需要添加我正在使用的模块才能成功编译:
$ javac org/test/OldClass.java --add-modules=java.activation,java.xml.ws.annotation
我想在Eclipse中使用Java 9(使用Oxygen.1a)编译它。但是我得到The import javax.activation cannot be resolved
编译错误。
如何告诉eclipse编译器添加这些模块?我没有在Eclipse documentation中找到关于它的任何提示。
Here你可以找到一个我正在测试的简单eclipse项目。
答案 0 :(得分:2)
仍需编写这些功能的完整文档,但已在New & Noteworthy for Photon M3 (正在进行中)中开始。您正在寻找的功能在以
开头的段落中提到在“内容”选项卡上,可以通过从左到右移动模块来包含或排除容器(如JRE系统库)中的各个模块,反之亦然......
此对话框标签结合了--add-modules
和--limit-modules
的效果。