Java 9 中的模組依賴問題:「無法為自動產生的模組名稱派生模組描述符」
無法派生模組描述符當聲明對在產生的模組名稱中包含保留關鍵字的庫的依賴項時,會出現Java 9 中自動產生的模組名稱的問題。 Netty 的 Epoll 傳輸就是這種情況,它會產生包含「native」關鍵字的模組名稱。
Java 9 引入了模組的概念,需要明確的模組聲明。但是,自動產生的模組名稱遵循可能包含保留關鍵字的約定,從而導致明確聲明依賴項時發生衝突。
解決方案:
要解決這個問題,有兩個方法主要方法有:
1。使用Automatic-Module-Name打包:
函式庫可以使用指定Automatic-Module-Name屬性的META-INF/MANIFEST.MF檔案打包其工件。此屬性允許庫定義與產生的模組名稱不同的模組名稱,這可以避免關鍵字衝突。
2.庫所有者將模組聲明添加到JAR:
庫所有者可以使用module-info.java 檔案將必要的模組聲明添加到其JAR文件中。這聲明了明確的模組依賴關係並確保與 Java 9 的模組系統相容。
說明:
Java 的模組宣告語法指定模組名稱必須包含有效的 Java 識別碼。保留關鍵字(例如“native”)不允許作為標識符,從而導致錯誤訊息“無效的模組名稱:'native'不是Java 標識符。”
為了解決這個問題,Java 模組系統規範建議將連字符和其他特殊字元轉換為下劃線,並在必要時使用下劃線作為特定字元或關鍵字的前綴。不過,要注意的是,下劃線在 Java 9 中也成為了關鍵字,因此應謹慎使用它們作為前綴。
以上是如何解決 Java 9 的「無法為自動產生的模組名稱派生模組描述符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!