mam następujący program:Eksportowanie pakietu z modułem systemu jest niedozwolona z --release
// module-info.java
module a {
}
// Main.java
public class Main {
public static void main(String[] args) {
System.out.println(sun.nio.ByteBuffered.class);
}
}
Ten program kompiluje się z powodzeniem z opcją --add-exports
:
> javac --add-exports java.base/sun.nio=a module-info.java Main.java
Jednak, gdy dodaję Argument --release
nie działa:
> 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
Zasadniczo te dwa polecenia są równoważne. Dlaczego więc ten drugi jest zabroniony?
Ponadto, ponieważ IDEA przekazuje do javaca argument --release
, uniemożliwia to rozwój w IDEA, jeśli mój projekt wymaga wewnętrznego interfejsu API.
Używam JDK 9 + 178.
@Tavo To pytanie jest o '- -add-exports'. Moje pytanie dotyczy połączenia '--add-exports' i' --release', co czyni go zupełnie innym. – ZhekaKozlov
Zgadzam się, usunę komentarz :) – Tavo
Jak poprawnie powiedział Michael Easter, ta kombinacja opcji została zabroniona w javacu, więc teraz jest to dla programistów IDEA, aby dostosować ich wywołanie kompilatora. Złożyłem https: //youtrack.jetbrains.com/issue/IDEA-176994 - mam nadzieję, że wkrótce zostanie naprawiona. –