Heim >Java >javaLernprogramm >Java 9-Moduldeskriptorfehler: Wie gehe ich mit automatisch generierten Namen wie „native' um?
Java 9 kann keinen Moduldeskriptor für automatisch generierte Namen ableiten: Problemumgehungen untersuchen
In Java 9 führte die Einführung von Modulen zu einer Anforderung um Modulnamen gemäß den Java-Identifikatorregeln zu definieren. Diese Anforderung stellt jedoch eine Herausforderung für bestimmte automatisch generierte Modulnamen dar, insbesondere für solche, die das Schlüsselwort „native“ enthalten.
Betrachten Sie den Fall der Netty Epoll-Transportabhängigkeit:
<dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>${netty.version}</version> <classifier>${epoll.os}</classifier> </dependency>
Der automatisch generierte Modulname für diese Abhängigkeit lautet „netty.transport.native.epoll“, was aufgrund des Vorhandenseins des „nativen“ gegen die Java-Identifikatorregeln verstößt. Schlüsselwort.
Um dieses Problem zu beheben, besteht eine mögliche Problemumgehung darin, die Datei META-INF/MANIFEST.MF des Artefakts so zu ändern, dass sie das Attribut Automatic-Module-Name enthält . Dieses Attribut definiert den Modulnamen, wie er im Moduldeskriptor verwendet werden soll:
<manifestEntries> <Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name> </manifestEntries>
Diese Lösung erfordert jedoch die Zusammenarbeit mit den Eigentümern des Artefakts, was sie zu einer weniger unmittelbaren Option macht.
An Ein alternativer Ansatz besteht darin, dass Artefakteigentümer Moduldeklarationen mithilfe von module-info.java in ihre JARs aufnehmen. Diese Aktion löst einen Bottom-up-Migrationsprozess aus, bei dem davon ausgegangen wird, dass Abhängigkeiten, die keine Modulinformationen bereitstellen, alle Pakete exportieren.
Das obige ist der detaillierte Inhalt vonJava 9-Moduldeskriptorfehler: Wie gehe ich mit automatisch generierten Namen wie „native' um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!