我用JavaFX 15.0.1版本撰寫了一個JavaFX應用程式。
我使用的是IntelliJ IDEA,由于我從IntelliJ中執行我的代碼,所以一切都很正常。
現在我想部署應用程式,構建 Jar 并創建一個可執行檔案。
我已經知道,Java 8 之后的版本存在一些問題,因為不再包含打包。
我搜索了很多,并在 StackOverflow 和 YouTube 上找到了一些有用的東西,按照所有的指南一步一步地進行。
我還發現了一個視頻,視頻中的人使用了與我相同的 JavaFX 版本,并使用 IntelliJ 構建 Jar,最后,他只需雙擊創建的 Jar,應用程式就能順利運行,而且沒有任何錯誤。
這是我的實際設定 :
我設定了Launcher.java類,以繞過指南中的Main.java問題。
package main;
import main.Main;
public class Launcherpublic static void main(String[] args){Main.main(args);}。
}
我構建了該專案,然后在artifact中創建了一個新的基于模塊的,并添加了我的JavaFX SDK中的.dll檔案。
之后,我再次構建了該專案,然后我進入了: Build -> Build Artifacts and Build。
在這個程序之后,我的out目錄看起來是這樣的:
而在artifacts -> MenuManager_jar中,有我的MenuManager.jar檔案。
之后,正如我在指南中看到的,我可以簡單地雙擊它,或者用: java -jar MenuManager.jar,它應該運行我的應用程式。
但是在我雙擊之后,即使我用這個命令從控制臺運行,也不會發生任何事情。
java -jar MenuManager.jar
或者甚至
java --module-path "C:Program FilesJavajavafx-sdk-15.0.1lib" -add-modules javafx.controls,javafx.fxml -jar MenuManager.jar
它顯示了這個錯誤
Error: 無法找到或加載主類 main.Launcher
原因是:java.lang.ClassNotFoundException: main.Launcher
所以在那之后,我決定自己尋找Launcher.class檔案。
而這是存在于我的Jar中,以zip格式打開:
顯然,在jar中的 "main "目錄外有所有的依賴/庫 :
我找了很多帖子/視頻/指南/打包工具,但我找不到為我的專案創建這個Jar或Executable的方法。這個程序以正確的方式創建了Jar,但由于某些原因,我似乎無法運行它。
我需要在這最后一步中得到幫助。
uj5u.com熱心網友回復:
我自己發現了解決它的方法!
我在我的專案中匯入了一些其他的外部庫,而不是標準的JavaFX jar。這是一個特定的mysql庫版本,作為Jar匯入。
它可能在構建工件時出現了一些問題,我仍然不知道原因,可能是版本問題或不兼容。
在用另一個庫替換它或者移除它之后,jar構建得很好,我甚至可以雙擊運行我的應用程式。
建議
我建議有同樣問題的人,或者想啟動一個JavaFX應用程式并知道他們將創建一個jar的人:- 在匯入一個新的JavaFX應用程式后,我們要做的是:
- 在匯入一個新的庫后,嘗試構建工件,這樣你在使用它和構建后就不會有一些意外了。
- 如果該庫使最終的jar不作業,嘗試用一個類似的庫來替換它,或者嘗試找出該庫是否有不同的版本。
- 從專案開始時,嘗試在每次做出重大改變時build和build artifact,以便能夠更快地跟蹤問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/320508.html
標籤:




