Es konnte kein Paket aus dem java.base-Modul exportiert werden

8

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:

%Vor%

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.

    
nullpointer 01.03.2017, 17:57
quelle

2 Antworten

11

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

hinzufügen %Vor%

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:

%Vor%

Obwohl sich Unsafe im Modul jdk.unsupported befindet, wird diese Technik in JDK 9 gemäß JEP 260 .

    
Stuart Marks 03.03.2017, 10:43
quelle
8

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 ).

    
Nicolai 01.03.2017 20:10
quelle