我有以下程序:導出從系統模塊的封裝是不允許用--release
// module-info.java
module a {
}
// Main.java
public class Main {
public static void main(String[] args) {
System.out.println(sun.nio.ByteBuffered.class);
}
}
這個程序與--add-exports
選項編譯成功:
> javac --add-exports java.base/sun.nio=a module-info.java Main.java
然而,當我添加--release
的說法,它失敗了:
> javac --add-exports java.base/sun.nio=a --release 9 module-info.java Main.java
error: exporting a package from system module java.base is not allowed with --release
1 error
基本上,這些兩個命令是等價的。那麼爲什麼後者被禁止呢?
此外,由於IDEA將--release
參數傳遞給javac,因此如果我的項目需要內部API,則IDEA中的開發將無法進行。
我正在使用JDK 9 + 178。
工作始終 - -add-exports'。我的問題是關於'--add-exports'和'--release'的組合,這使得它完全不同。 – ZhekaKozlov
同意,我將刪除評論:) – Tavo
正如邁克爾復活節所說的,這些選項的組合已被javac禁止,所以現在IDEA開發人員可以調整它們的編譯器調用。我提交了https://youtrack.jetbrains。com/issue/IDEA-176994 - 希望它很快就會被修復。 –