Heim >Java >javaLernprogramm >Wie kann der Fehler „Moduldeskriptor kann nicht abgeleitet werden' für automatisch generierte Modulnamen in Java 9 behoben werden?

Wie kann der Fehler „Moduldeskriptor kann nicht abgeleitet werden' für automatisch generierte Modulnamen in Java 9 behoben werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-25 03:43:12647Durchsuche

How to Resolve

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:

  • Konvertieren Sie Bindestriche oder andere Sonderzeichen in Unterstriche.
  • Fügen Sie Schlüsselwörtern einen Unterstrich hinzu.
  • Stellen Sie Komponenten, die mit unzulässigen Zeichen beginnen, ein voran Unterstrich.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn