Heim >Java >javaLernprogramm >Wie kann der Fehler „Moduldeskriptor kann nicht abgeleitet werden' für automatisch generierte Modulnamen in Java 9 behoben werden?
Moduldeskriptor für automatisch generierte Modulnamen in Java 9 kann nicht abgeleitet werden?
In Java 9 tritt ein häufiges Problem bei der Verwendung auf Automatisch generierter Modulname für Abhängigkeiten, die reservierte Schlüsselwörter wie „native“ enthalten. Dies kann zu Fehlern wie „Modul nicht gefunden“ führen.
Verstehen des Problems
Java 9 führte das Konzept von Modulen ein, das die Kapselung und Isolierung von Code ermöglichte. Module haben eindeutige Namen, die den Java-Identifikatorregeln entsprechen müssen. Bestimmte Schlüsselwörter wie „nativ“ können jedoch nicht als Teil eines Modulnamens verwendet werden.
Mögliche Problemumgehungen
1. Verwendung des Manifesteintrags „Automatic-Module-Name“
Eine Lösung besteht darin, der JAR-Datei der problematischen Abhängigkeit einen Manifesteintrag „Automatic-Module-Name“ hinzuzufügen. Dieser Eintrag gibt einen benutzerdefinierten Modulnamen für das Artefakt an und überschreibt den automatisch generierten. Beispielsweise könnten Sie die Manifestdatei der Netty-Epoll-Abhängigkeit so ändern, dass sie Folgendes enthält:
<Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name>
2. Hinzufügen einer Moduldeklaration zu JAR
Artefaktbesitzer können ihrer JAR auch eine Moduldeklaration mithilfe einer „module-info.java“-Datei hinzufügen. Dadurch wird der Modulname explizit definiert und so die Kompatibilität mit dem Modulsystem von Java 9 sichergestellt.
Alternative Namenskonventionen
Gemäß den Java-Spezifikationen müssen Modulnamen gültige Paketnamen sein. Um Fälle zu berücksichtigen, in denen der Internetdomänenname einer Abhängigkeit nicht in einen gültigen Paketnamen übersetzt werden kann, werden die folgenden Konventionen empfohlen:
Beachten Sie jedoch, dass in Java 9 von der Verwendung von Unterstrichen in Modulnamen aufgrund ihres Status als Schlüsselwort abgeraten wird.
Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Moduldeskriptor kann nicht abgeleitet werden' für automatisch generierte Modulnamen in Java 9 behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!