Im Verzeichnis JRE-9/lib
(zumindest unter Windows) gibt es eine neue Datei namens modules
mit einer Größe von etwa 107 MB. Ist es möglich, diese Datei zu extrahieren oder Java-Module darin aufzulisten?
Ich kann sehen, dass ein neues Tool namens jmod
bei jdk-9/bin/jmod.exe
verfügbar ist, aber das ist zum Lesen von .jmod
files, das sich in jdk-9/jmods
befindet und es kann die Datei modules
nicht lesen.
Die Datei modules
ist eine Containerdatei. Es ist intern im JDK und das Format ist nicht dokumentiert (es kann sich jederzeit ändern). Zur Fehlerbehebung kann das Tool jimage
im Verzeichnis bin zum Auflisten oder Extrahieren des Inhalts verwendet werden.
Die Datei modules
soll eine einzige Datei sein (die nirgendwo extrahiert werden soll), die eine binäre Darstellung aller Module enthält, die im JDK in einem Dokumentationsformat vorhanden sind, das geändert werden kann. Sie können die enthaltenen Module mit java --list-modules
auflisten.
Anfangs enthält die Datei modules
jedes Modul und verdoppelt im Grunde die Seite des JDK, aber sobald Sie Ihr JDK mit dem Dienstprogramm jlink
"verkleinern", wird die modules
-Datei kleiner (angenommen Ihr Programm enthält eine Teilmenge der mit dem JDK bereitgestellten Module. Weitere Informationen zu jlink
finden Sie hier: Ссылка
Die Runtime-Ressourcen werden rückwärtskompatibel behandelt. Z.B. wenn du es gemacht hast
%Vor%In der Vergangenheit haben Sie normalerweise etwas wie
%Vor%Wenn Sie unter Java 9 dasselbe ausführen, erhalten Sie
%Vor% stattdessen. In jedem Fall können Sie ein FileSystem
darauf öffnen, um die anderen verfügbaren Ressourcen (seit Java 7) zu überprüfen. Während das ZipFileSystem
zuerst über FileSystems.newFileSystem
erstellt werden musste, ist das Dateisystem von Java 9 sogar bereits geöffnet:
Wenn Sie unter einer anderen als der zu prüfenden JRE arbeiten, müssen Sie zuerst die entsprechende Dateisystemimplementierung manuell laden. Dies eröffnet jedoch die Möglichkeit, eine Java 9-Installation sogar von einer Java 8 JRE aus zu prüfen:
%Vor% Sobald Sie ein Dateisystem haben (oder Path
), können Sie alle Standardfunktionen von z. Files
, um die Daten zu prüfen oder zu extrahieren / kopieren , obwohl der richtige Ausdruck wäre, "eine äquivalente Klassendatei" in einem anderen Dateisystem zu speichern, da die Darstellung des Laufzeit-Images überhaupt keine Klassendatei sein muss.
Tags und Links java java-9 java-module jdk-tools jmod