Wie entpacke ich die Datei jre-9 / lib / modules?

8

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.

    
Eng.Fouad 27.09.2017, 02:28
quelle

5 Antworten

6

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.

    
Alan Bateman 27.09.2017, 06:38
quelle
3

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: Ссылка

    
Andy Guibert 27.09.2017 02:50
quelle
3

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:

%Vor%

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.

    
Holger 27.09.2017 15:37
quelle
1

Sie können Module über java --list-modules

auflisten     
ZhekaKozlov 27.09.2017 02:49
quelle
0

Sie können libjimage verwenden, um diese Datei zu lesen.

    
Glavo 08.03.2018 11:06
quelle