因此,我在 Intelli J Idea IDE 中的許多基于 JavaFX Gradle 的專案中一直面臨這些問題。這讓我不得不手動下載庫檔案并將它們作為解決方法的一部分作為我的專案的一部分。
當我在 IDE 中運行時,我擁有的 gradle 專案一直失敗> Task :compileJava ,例如,在這個讓我創建問題的特殊情況下,我已經成功地從 maven 匯入了 socket io lib implementation 'io.socket:socket.io-client:2.0.1' ,我已經設法匯入它并撰寫了一個它的一些示例代碼,我已經添加了
requires engine.io.client;
requires socket.io.client;
在模塊資訊檔案中。因此,當它運行失敗時,說明
error: module not found: socket.io.client
requires socket.io.client;
error: module not found: engine.io.client
requires engine.io.client;
我已經在 J??DK 13、16、17 上嘗試過,看看我是否遺漏了一些東西,但一直無法運行,所以我現在注意到我之前的 JavaFX 專案中的一個趨勢,我設法逃脫了。
因此,如果有人了解 Gradle 設定有什么問題,請提供幫助。
uj5u.com熱心網友回復:
該答案概述了一種方法,而不是具體的解決方案。
socket.io.client并且engine.io.client不是模塊名稱。
該socket.io-client庫不是 Java 平臺模塊化的(據我所知),因此它將是一個自動模塊。
模塊的名稱將派生自 jar 名稱。我不知道確切的翻譯,因為 jar 名稱.和-字符可能會重新映射(或不重新映射)以使模塊名稱有效。首先嘗試確切的 jar 檔案名。每個 jar 只能有一個模塊。
除了需要正確的名稱外,jar 還需要位于模塊路徑上。Maven 會自動為自動模塊執行此操作,Gradle 不會。我不是 Gradle 專家,因此不會就如何為 Gradle 執行此操作提供建議。
如果您在 module-info 中使用正確的名稱并確保 jar 在模塊路徑上,那么它可能會起作用,或者它可能與 Java 模塊系統不兼容,而您無法輕松修復(即損壞的模塊必須由模塊維護者修復)。
您可以向庫維護者提出問題,讓他們module-info.java為模塊創建檔案并更新他們關于如何在 Java 模塊環境中使用他們的庫的檔案。
如果您嘗試使用的庫在用作模塊時與 Java 模塊系統不兼容,那么您可以嘗試通過module-info.java從專案中洗掉并添加適當的命令列開關來使您的專案非模塊化。要了解如何執行此操作,請參閱openjfx.io上有關非模塊化專案的檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/475165.html
標籤:爪哇 毕业典礼 javafx 套接字.io openjdk-17
