添加Java 9系统模块在Eclipse
问题描述:
我有一些遗留的Java代码进行编译,即:添加Java 9系统模块在Eclipse
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(使用Oxygen.1a)中使用Java 9编译它。但是,我得到The import javax.activation cannot be resolved
编译错误。
如何告诉eclipse编译器添加这些模块?关于它,我没有在Eclipse documentation找到任何提示。
Here你可以找到一个简单的eclipse项目,我正在测试。
答
这些功能的完整文档仍然需要编写,但New & Noteworthy for Photon M3(工作正在进行)已经开始。您正在寻找的功能的段落中提到的开始
在一个容器内的内容标签独立模块,如JRE系统库可以包括或由模块移动排除左到右,反之亦然...
此对话框选项卡结合了--add-modules
和--limit-modules
的效果。
[java 9中javax.activation包的替代品是什么?](https://stackoverflow.com/questions/46493613/what-is-the-replacement-for-javax-activation-package-在的Java-9)。它被弃用和升级的原因。 – nullpointer
@nullpointer这不是这个问题的重复。 –
在这种情况下,您能否与项目设置一起共享Eclipse的Run配置? – nullpointer