2017-10-17 91 views
5

我有一些遺留的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項目,我正在測試。

+1

[java 9中javax.activation包的替代品是什麼?](https://stackoverflow.com/questions/46493613/what-is-the-replacement-for-javax-activation-package-在的Java-9)。它被棄用和升級的原因。 – nullpointer

+1

@nullpointer這不是這個問題的重複。 –

+1

在這種情況下,您能否與項目設置一起共享Eclipse的Run配置? – nullpointer

回答

1

這些功能的完整文檔仍然需要編寫,但New & Noteworthy for Photon M3(工作正在進行)已經開始。您正在尋找的功能的段落中提到的開始

在一個容器內的內容標籤獨立模塊,如JRE系統庫可以包括或由模塊移動排除左到右,反之亦然...

此對話框選項卡結合了--add-modules--limit-modules的效果。