Was ist das Java 9-Reflektionsäquivalent von --add-Modulen?

8

Ich brauche einen Weg, um einem neu erstellten Klassenlader (ohne übergeordnete Eltern) zu sagen, welche Module ich ihm zur Verfügung stellen möchte (z. B. java.scripting ).

Was ist das Reflexionsäquivalent, wenn --add-modules in der Befehlszeile übergeben wird?

    
tibbe 07.06.2017, 05:01
quelle

1 Antwort

6

Es gibt keine programmatische Möglichkeit, das von der JVM beim Start erstellte Modul-Diagramm wesentlich zu bearbeiten (das Hinzufügen von Lese-Kanten ist die einzige Ausnahme). Dies war eine bewusste Entscheidung, die laufende Anwendung sicher und stabil zu halten. (Beispiel: Was passiert mit Ihrem Code, wenn Sie eine Laufzeitumgebung ausführen, die das java.scripting -Modul nicht enthält?)

Sie können jedoch eine neue Ebene erstellen, die ein völlig neues Moduldiagramm enthält. Beim Start der JVM wird aus den Befehlszeilenflags und dem Inhalt des Modulpfads eine einzelne Ebene erstellt. Mit der vorhandenen API können Sie dann neue Ebenen erstellen. Um mehr über Ebenen zu erfahren, werfen Sie einen Blick auf Der Status des Modulsystems und das Javadoc für ModuleLayer .

    
Nicolai 07.06.2017, 14:11
quelle

Tags und Links