Java 9 で自動生成されたモジュール名のモジュール記述子を導出できません
Java 9 を使用している場合、試行時にエラーが発生する可能性があります「native」などの予約キーワードを含む自動生成されたモジュール名を持つ依存関係を追加します。このエラーは、Java 9 モジュール名が特定の命名規則に従う必要があり、「ネイティブ」が有効な Java 識別子ではないために発生します。
これを解決する 1 つの方法は、「META-INF」を追加して依存関係の JAR ファイルを変更することです。 「Automatic-Module-Name」属性を持つ /MANIFEST.MF」ファイル。この属性は、JAR が自動モジュールに変換されるときに使用されるモジュール名を指定します。
例:
<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>
あるいは、アーティファクト所有者は、「」を使用してモジュール宣言を JAR に追加できます。 module-info.java」ファイル。これらの宣言はモジュール名とその依存関係を明示的に定義するため、無効なモジュール名の問題に対処するのに役立ちます。ただし、このアプローチには、影響を受けるライブラリの所有者との協力が必要です。
Java モジュール システムの仕様に従って、モジュール名は次の命名規則に従う必要があります。
Java 9 でアンダースコアを使用するのは、キーワードとしてみなされるため注意が必要であることに注意してください。そのため、モジュール名またはパッケージ名として「ネイティブ」または「デフォルト」を使用することは避けてください。
以上が自動生成されたモジュール名を使用した Java 9 での「モジュール記述子を導出できません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。