Moduldeskriptor für automatisch generierte Modulnamen in Java 9 kann nicht abgeleitet werden
Bei der Verwendung von Java 9 kann es beim Versuch zu einem Fehler kommen um eine Abhängigkeit mit einem automatisch generierten Modulnamen hinzuzufügen, der ein reserviertes Schlüsselwort enthält, z. B. „native“. Dieser Fehler tritt auf, weil Java 9-Modulnamen bestimmten Namenskonventionen folgen müssen und „nativ“ kein gültiger Java-Bezeichner ist.
Ein Ansatz zur Lösung dieses Problems besteht darin, die JAR-Datei der Abhängigkeit durch Hinzufügen einer „META-INF“ zu ändern /MANIFEST.MF“-Datei mit einem „Automatic-Module-Name“-Attribut. Dieses Attribut gibt den Modulnamen an, der verwendet werden soll, wenn die JAR in ein automatisches Modul konvertiert wird.
Zum Beispiel:
<dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>${netty.version}</version> <classifier>${epoll.os}</classifier> </dependency> // Add a manifest file to the dependency's JAR: <manifestEntries> <Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name> </manifestEntries>
Alternativ können Artefakteigentümer Moduldeklarationen zu ihrer JAR hinzufügen, indem sie „ module-info.java“-Dateien. Diese Deklarationen definieren explizit den Modulnamen und seine Abhängigkeiten, was dazu beitragen kann, das Problem mit ungültigen Modulnamen zu beheben. Dieser Ansatz erfordert jedoch die Zusammenarbeit mit den Eigentümern der betroffenen Bibliotheken.
Gemäß den Java Module System-Spezifikationen sollten Modulnamen diesen Namenskonventionen folgen:
Denken Sie daran, dass die Verwendung von Unterstrichen in Java 9 schwierig sein kann, da sie als Schlüsselwörter gelten. Vermeiden Sie daher die Verwendung von „native“ oder „default“ als Modulnamen oder Paketnamen.
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Moduldeskriptor kann nicht abgeleitet werden' in Java 9 mit automatisch generierten Modulnamen behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!