Angenommen, ich besitze eine Bibliothek lib.jar
, für die ich den Quellcode nicht habe (oder er ist in einer Nicht-Java-Sprache geschrieben, die Module noch nicht kennt). lib.jar
hat keine module-info.class
und ich möchte es nicht als ein automatisches Modul verwenden, also würde ich gerne module-info.class
hinein injizieren.Wie Moduldeklaration in JAR injizieren?
ich zum ersten Mal erzeugen module-info.java
mit dem folgenden Befehl:
jdeps --generate-module-info . lib.jar
dies erzeugt so etwas Angenommen:
module lib {
exports package1;
exports package2;
}
Dann versuche ich es zu kompilieren, aber javac
schlägt fehl, da die Pakete package1
und package2
tun existiert nicht:
> javac module-info.java
module-info.java:4: error: package is empty or does not exist: package1
Natürlich kann ich Verzeichnisse package1
und package2
mit Dummy-Klassen in ihnen erstellen, aber gibt es einen besseren Ansatz?
, wenn ich diesen Befehl verwenden, habe ich noch den Fehler: > javac module-info.java module-info.java:4: Fehler: Paket ist leer oder nicht vorhanden ist : package1 Irgendwelche ideia, warum es für mich nicht funktioniert? –
@TiagoSantos Existiert das Paket im JAR? – ZhekaKozlov
Ja, alles scheint in Ordnung, ich habe es mit der oben genannten Lösung von nullpointer funktioniert, ich stimme zu, dass Ihre Lösung eleganter ist, das einzige Problem ist, dass nicht funktioniert mit meinen .jars:/in 2 verschiedenen versucht –