Java 9 無法為自動產生的名稱派生模組描述符:探索解決方法
在Java 9 中,模組的引入提出了一個要求根據Java標識符規則定義模組名稱。然而,這項要求對某些自動產生的模組名稱提出了挑戰,特別是那些包含關鍵字「native」的模組名稱。
考慮Netty Epoll 傳輸依賴項的情況:
<dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>${netty.version}</version> <classifier>${epoll.os}</classifier> </dependency>
此依賴項的自動產生的模組名稱是“netty.transport.native.epoll”,由於“native”的存在,它違反了Java 標識符規則
要解決此問題,一種潛在的解決方法是修改工件的META-INF/MANIFEST.MF 檔案以包含 Automatic-Module-Name 屬性。此屬性定義模組名稱,因為它應該在模組描述符中使用:
<manifestEntries> <Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name> </manifestEntries>
但是,此解決方案需要與工件所有者協作,使其成為一個不太直接的選擇。
An另一種方法是讓工件擁有者在其 JAR 中使用 module-info.java 包含模組宣告。此操作會觸發自下而上的遷移過程,其中假定不提供模組資訊的依賴項導出所有包。
以上是Java 9 模組描述符錯誤:如何處理自動產生的名稱,如「native」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!