[英]How can I create a Windows .exe (standalone executable) using Java/Eclipse?
我是編程領域的新手。 與 C++ 一起工作了大約 5 個月,並決定開始進入 Java。我使用 Eclipse 作為我的 IDE,顯然 Java 用於語言。 我正在嘗試編寫一個簡單的 HelloWorld 應用程序,它可以通過命令提示符可執行文件運行。
在 Visual Studio 中,創建可執行文件似乎相當容易。 我所要做的就是使用下拉箭頭並選擇發布,然后運行我的構建。 希望能夠在命令提示符下編寫/運行 Java 的目的是讓我能夠在 go 之前完全使用 Swing 練習一些語言基礎知識。
所以歸根結底,創建用 Java 編寫的命令提示符.exe 的最簡單方法是什么?
提前致謝!
Java本身不允許構建exe ,這會破壞其跨平台的目的。
AFAIK,這些是您的選擇:
制作一個可運行的JAR 。 如果系統支持並且配置正確,則在GUI中雙擊JAR將啟動應用程序。 另一種選擇是編寫一個啟動程序shell腳本/批處理文件,它將使用適當的參數啟動您的JAR
還有可執行包裝器 - 請參閱如何將我的Java程序轉換為.exe文件?
典型的Java程序編譯成.jar文件,如果目標機器安裝了Java並且Java在其PATH中,則可以像.exe文件一樣執行。 從Eclipse中,您可以使用“文件”菜單中的“導出”菜單項。
使用jpackage
創建本機安裝程序
java 名為jpackage
的打包工具作為 Java 開發工具包 (JDK) 版本 16 的一部分發布。
該工具與各種平台的本機打包工具(例如WIX用於 Windows, RPM和DEB用於 Linux 發行版, DMG用於 Mac)結合使用,允許為 Java 應用程序構建本機安裝程序,然后可以作為可執行文件運行。 對於分發,可能只分發應用程序的可執行文件,獨立於安裝程序(我不知道,我沒試過)。
一篇不錯的教程風格的博客文章描述了如何使用jpackage
工具為 Java 應用程序創建本機 Windows 安裝程序:
使用jlink
和jdeps
自定義運行時映像
打包工具可以(可選)與jlink
工具結合使用:
jlink - 將一組模塊及其依賴項組裝並優化為自定義運行時映像
這允許您為您的應用程序自定義運行時映像,以僅包括您的應用程序代碼、java 運行時和第三方庫所需的自定義選定模塊化部分,而不是分發完整的 java 運行時。
或者,您也可以使用jdeps
工具來確定jlink
的輸入。
關於jdeps
+ jlink
+ jpackage
+ 本地包創建器(例如 wix/rpm/deb/dmg)用法的完整討論不在 scope 的 StackOverflow 答案中,但如果您搜索,可以在 web 上找到各種資源。
創建獨立的.exe
而不是安裝程序
這可以使用warp-packer從jlink
創建的圖像和應用程序啟動器中創建一個 exe 來完成。
第三方工具可以幫助提供解決方案
如果您希望結合使用所有這些工具,事情會變得復雜,我建議您使用第 3 方實用程序或模板來幫助執行此任務。 例如:
jpackage
工具創建應用程序安裝程序。”對於 JavaFX 特定應用程序(因為您的問題有 JavaFX 標簽),您可以查看:
對於本機移動部署,請參閱 Gluon Mobile
這個問題是 Windows 具體的,但為了完整起見,如果您的目標是在移動設備上部署本機應用程序,那么您可能需要使用第三方解決方案,例如Gluon Mobile 。
背景原理(不需要的請忽略)
使用jpackage
創建本機安裝程序可能需要一些工作,那么您為什么要這樣做呢?
以下是一些原因:
jpackage
創建的安裝程序分發時,該應用程序可以安裝在目標系統上,而無需用戶手動安裝其他依賴項(例如 Java 運行時)。 安裝程序將負責確保安裝您的應用程序及其所需的任何依賴項。 是的,Java 在大多數情況下是跨平台的,但許多用戶對此並不關心,相反,他們只是希望他們的應用程序有一個流暢和熟悉的安裝(和卸載)體驗,而jpackage
可以幫助實現這一點。
創建.exe發行版對於Java來說並不常見。 雖然這樣的包裝器確實存在,但正常的操作模式是創建.jar文件。
要從Eclipse中的Java項目創建.jar文件,請使用file-> export-> java-> Jar文件。 這將創建包含所有類的存檔。
在命令提示符下,使用如下調用:
java -cp myapp.jar foo.bar.MyMainClass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.