IDEA-EAP für JDK9-Entwicklungsexperimente verwenden.
Ich erhalte den folgenden Fehler -
%Vor%
Die Klassendefinition ist wie -
%Vor% Ich habe versucht, auch eine module-info.java
-Datei innerhalb des mit der IDE erstellten Moduls mit den folgenden Anweisungen einzufügen:
Die Verzeichnisstruktur sieht nun wie auf dem Bild dargestellt aus -
Die IDE spiegelt jedoch die module-info.java
als unbenutzt wieder und wahrscheinlich ist das der Grund, dass ich module com.jigsaw.npe
nicht wie oben beschrieben definieren kann.
Ich suche nach Hilfe, wie man die Modulinfo.java und / oder etwas anderes als das, was ich verpasst habe, richtig platziert.
Nicolais Antwort ist korrekt in Bezug auf die Techniken, die notwendig sind, um ein ansonsten nicht exportiertes Paket vom java.base
Modul oder von irgendeinem anderen zu exportieren anderes Modul.
Wenn Sie jedoch Unsafe
verwenden möchten, verwenden Sie sun.misc.Unsafe
, das vom Modul jdk.unsupported
exportiert wird. Wenn Sie Ihren Code für das unbenannte Modul kompilieren, müssen Sie nichts Besonderes in Bezug auf Module tun, um Zugriff darauf zu erhalten. Wenn Sie Code in einem Modul kompilieren, müssen Sie
zu Ihrer module-info.java
-Datei.
Um Unsafe
zu verwenden, müssen Sie die reflective setAccessible
-Technik verwenden, um Zugriff auf das Feld zu erhalten. Dies ist das gleiche wie in früheren JDK-Releases:
Obwohl sich Unsafe
im Modul jdk.unsupported
befindet, wird diese Technik in JDK 9 gemäß JEP 260
Das Modul java.base exportiert das Paket jdk.internal.misc.
, daher ist der Typ jdk.internal.misc.Unsafe
nicht zugänglich - als Konsequenz Kompilierung schlägt fehl.
Sie können das Paket exportieren, indem Sie die folgende Befehlszeilenoption hinzufügen:
%Vor% Das müssen Sie beim Kompilieren ( javac
) und tun, wenn Sie den Code ausführen ( java
).
Tags und Links java java-9 jigsaw java-module module-info