精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Jpackage-制作無需預裝Java環境的Jar可執行程序

開發 前端
本文介紹了在沒有預裝 JRE 環境的系統上運行 Java 程序的方法。首先,介紹如何使用 Java 的 jar? 命令行工具創建一個可執行的 JAR 文件,這需要編寫 Java 程序,配置 MANIFEST.MF? 文件,并使用 jar? 命令創建包含主類的 JAR 文件。

JAR 包要在預裝 JRE 環境的系統上執行。如果沒有預先安裝 JRE 環境,又想直接運行 Java 程序,該怎么辦呢?

這篇文章我們會先學習如何將 Java 程序打包成一個可執行的 Java JAR 文件。然后演示如何使用這個 JAR 文件生成 Windows、Linux、MacOS 上的可執行程序。我們將使用 Java 自帶的 jar 命令行工具來創建 JAR 文件。然后學會使用 jpackage 工具創建各個系統上的可執行程序。

注意:jpackage 工具從 Java 14 版本開始提供的,可以用來生成可執行程序。

什么是 jar

jar 文件是一個包含編譯后的 Java Class 文件和其他資源的容器。它基于廣泛使用的 ZIP 文件格式,因此 jar 文件可以使用 ZIP解壓縮工具解壓。一個可執行的 jar 文件需要包含一個 main 類作為程序的入口,并在 MANIFEST.MF 文件中指定

但是為了運行 jar 格式的應用程序,必須有一個Java 運行時環境(JRE)。

jar 命令

Java 的 jar 命令是 Java Archive Tool,它是一個用于創建、查看和管理 jar 文件的命令行工具。此工具包含在 JDK 中。

詳細介紹 jar 命令的使用不是本文目的,下面給出 jar 命令的常見用法。

創建一個輸出 Hello 的Java 類用于測試。

目錄結構:

├── Hello.java
└── META-INF
    └── MANIFEST.MF

查看文件內容然后編譯 Hello.java

public class Hello{
    public static void main(String[] args) throws InterruptedException{
        System.out.println("Hello");
        // 3s 后退出
        Thread.sleep(3 * 1000);
    }
}
// 編譯:javac Hello.java

配置 MANIFEST.MF 文件,注意,最后一定要有一個換行,否則可能在 Windows 上運行失敗。

Manifest-Version: 1.0
Main-Class: Hello

1. 創建 jar 文件

jar cmf META-INF/MANIFEST.MF hello.jar Hello.class

其中 c 表示創建新的歸檔文件,m 指定清單文件,f 指定生成的 jar 文件的名稱,最后是要添加到 jar 包中的文件列表。

2. 執行 jar 文件

java -jar hello.jar
Hello

3. 查看 jar 文件

$ jar tf hello.jar
META-INF/
META-INF/MANIFEST.MF
Hello.class

其中 t 為 list,列出文件。f 指定 jar 文件。

創建 jar 文件有多種方式,比如借助 Maven 或者 Gradle 工具都可以打包 Java 程序為 jar 文件,而且更加方便。比如 Spring Boot 開發過程中, mvn package 即可生成 jar 文件。

jpackage 命令

jpackage 命令是從 Java 14 開始提供的,可以幫助我們為模塊化或非模塊化 Java 應用程序生成指定系統平臺的可執行程序,而不用預先安裝 JRE 環境。如何做到的呢?

我們知道 Java 程序必須在 JRE環境才能運行, jpackage 其實是把 JRE 和 JAR 文件以及所有必要依賴項一起打包生成指定平臺的可執行程序。例如 Windows 上的 exe 或 macOS 上的 dmg。每種格式都必須構建在其運行的平臺上,沒有跨平臺支持。工具還提供了常見的自定義操作,如應用名,應用圖標等。

查看 jpackage 幫助:

jpackage --help
用法:jpackage <options>

示例用法:
--------------
    生成適合主機系統的應用程序包:
        對于模塊化應用程序:
            jpackage -n name -p modulePath -m moduleName/className
        對于非模塊化應用程序:
            jpackage -i inputDir -n name \
                --main-class className --main-jar myJar.jar
        從預構建的應用程序映像:
            jpackage -n name --app-image appImageDir
    生成應用程序映像:
        對于模塊化應用程序:
            jpackage --type app-image -n name -p modulePath \
                -m moduleName/className
        對于非模塊化應用程序:
            jpackage --type app-image -i inputDir -n name \
                --main-class className --main-jar myJar.jar
        要為 jlink 提供您自己的選項,請單獨運行 jlink:
            jlink --output appRuntimeImage -p modulePath \
                --add-modules moduleName \
                --no-header-files [<additional jlink options>...]
            jpackage --type app-image -n name \
                -m moduleName/className --runtime-image appRuntimeImage
    生成 Java 運行時程序包:
        jpackage -n name --runtime-image <runtime-image>
    對預定義應用程序映像進行簽名:
        jpackage --type app-image --app-image <app-image> \
            --mac-sign [<additional signing options>...]
        注:此模式下允許的其他選項只有:
              一組其他 mac 簽名選項和 --verbose
........

jpackage 創建可執行文件

創建可執行程序命令格式:

jpackage --input . --name YouAppName --main-jar youfile.jar

現在讓我們使用上面的 hello.jar 來創建一個可執行的JAR文件。hello.jar 直接運行會輸出 Hello 字符。

Windows 平臺

注意:對于 Windows,jpackage 需要 WiX 3.0 或更高版本。

Winx3.14 下載:https://github.com/wixtoolset/wix3/releases/tag/wix314rtm

由于 hello.jar 是一個命令行程序,沒有 UI界面,因此打包時使用 --win-console 參數配置以命令行方式啟動。

常見的 Windows 下 jpackage 參數還有:

  • ? --type : 指定打包后的格式,如 msi、exe,默認 exe。
  • ? --win-console:使用控制臺窗口啟動我們的應用程序
  • ? --win-shortcut : 在 Windows 開始菜單中創建快捷方式文件
  • ? --win-dir-chooser:讓最終用戶指定自定義目錄來安裝可執行文件

打包成 exe 程序。

jpackage --input . --name helloApp1 --win-console --win-shortcut --main-jar hello.jar

打包后可以得到 helloApp1-1.0.exe 文件。

PS C:\Users\Administrator\Desktop\test> jpackage --input . --name helloApp --win-console --win-shortcut --main-jar hello.jar
PS C:\Users\Administrator\Desktop\test> ls
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2024/3/7     22:14            526 Hello.class
-a----          2024/3/7     22:14            802 hello.jar
-a----          2024/3/7     22:13            208 Hello.java
-a----          2024/3/7     22:17      110145536 helloApp1-1.0.exe
-a----          2024/3/7     21:58             42 MANIFEST.MF

直接雙擊運行安裝。

圖片圖片

安裝 helloApp1-1.0.exe

安裝完成后,桌面上會出現圖標,雙擊可以運行并輸出 Hello 字符串。

圖片圖片

運行 helloApp1

Mac 平臺

Mac 平臺運行 jpackage 命令會自動生成 dmg 安裝包。

jpackage --input . --name hello --main-jar hello.jar

生成 hello-1.0.dmg 文件,雙擊彈出安裝界面。

圖片圖片

Jpackage 生成 Mac dmg 安裝文件

因為測試程序 hello.jar 是一個輸出 Hello 字符串的命令行程序,并沒有 UI,因此測試從命令行啟動查看輸出。

?  ~ /Applications/hello.app/Contents/MacOS/hello
Hello

Linux 平臺

jpackage --input . --name hello --main-jar hello.jar

我所在 Linux 系統為 Ubuntu22 ,所以生成安裝包 hello_1.0_amd64.deb 。

$ ls -l -h
total 37M
-rw-r--r-- 1 root root  37M Mar  7 16:50 hello_1.0_amd64.deb
-rw-r--r-- 1 root root  401 Mar  6 11:42 Hello.class
-rw-r--r-- 1 root root 1.1K Mar  7 16:42 hello.jar
-rw-r--r-- 1 root root   96 Mar  6 11:41 Hello.java
-rw-r--r-- 1 root root   41 Mar  6 11:42 MANIFEST.MF

安裝 hello_1.0_amd64.deb 。

$ apt install hello_1.0_amd64.deb

安裝后命令位于 /opt 目錄下,運行測試:

$ /opt/hello/bin/hello
Hello

總結

本文介紹了在沒有預裝 JRE 環境的系統上運行 Java 程序的方法。首先,介紹如何使用 Java 的 jar 命令行工具創建一個可執行的 JAR 文件,這需要編寫 Java 程序,配置 MANIFEST.MF 文件,并使用 jar 命令創建包含主類的 JAR 文件。接著,介紹了 jpackage 工具(從 Java 14 版本開始提供),該工具可以打包 JAR 文件和必要的 JRE 環境,生成適用于 Windows、Linux、MacOS 的可執行程序,使得 Java 應用程序能夠在無需預裝 JRE 的情況下運行。

參考

  • ? https://docs.oracle.com/en/java/javase/21/jpackage/
  • ? https://docs.oracle.com/en/java/javase/21/docs/specs/man/jpackage.html
責任編輯:武曉燕 來源: 程序猿阿朗
相關推薦

2009-07-08 15:18:00

JAR文件包jar命令

2009-09-04 09:36:17

Java調用

2010-03-23 10:29:28

Python程序編譯轉

2010-03-26 14:49:04

Python腳本

2012-01-05 10:37:40

Java

2022-06-17 07:57:53

攔截包裝軟鏈接

2025-09-01 08:24:57

.NET性能靜態鏈接

2022-04-24 11:06:54

SpringBootjar代碼

2021-08-12 09:17:18

WFH漏洞劫持攻擊

2022-01-11 09:59:23

Python關機程序文件

2025-08-21 10:01:22

2022-02-04 22:05:19

JVM程序內存模型

2009-04-16 10:37:17

Javaexejar

2020-02-06 10:10:24

python程序代碼

2011-11-17 10:34:44

并行程序

2020-10-12 08:23:56

CPU程序代碼

2021-01-08 10:05:01

JavaSpring Boojar

2012-03-12 12:34:02

JavaF#

2016-10-27 13:46:23

AWSLambdaServerless

2015-11-16 10:34:19

Linux動態庫總結
點贊
收藏

51CTO技術棧公眾號

调教视频免费在线观看| 中文字幕一区二区三区四区视频 | 亚洲成人精品在线播放| 乱插在线www| 久久精品一级爱片| 成人精品水蜜桃| 日韩电影在线观看一区二区| 国产精品99久久久久久动医院| 欧美不卡一区二区| www.涩涩涩| 免费影视亚洲| 国产精品五月天| 久久99精品久久久久子伦| 一级黄色片在线看| 一本色道久久综合亚洲精品不| 伊人精品在线观看| 亚洲精品无码一区二区| 国产精品美女午夜爽爽| 天天综合色天天综合| 亚洲人成77777| 天天干视频在线观看| 激情成人午夜视频| 国产精品久久久久国产a级| 久久这里只有精品国产| 日韩理论在线| 亚洲奶大毛多的老太婆| av影片在线播放| 91国内外精品自在线播放| 亚洲mv在线观看| 日本丰满少妇黄大片在线观看| 黄色在线小视频| www.日本不卡| yy111111少妇影院日韩夜片| 一本一道精品欧美中文字幕| 亚洲精品护士| 色综合久综合久久综合久鬼88| 日本污视频网站| 中文字幕av一区二区三区人| 亚洲白虎美女被爆操| 日本少妇激三级做爰在线| 亚洲mmav| 色综合色狠狠天天综合色| 福利视频免费在线观看| 中文在线手机av| 亚洲手机成人高清视频| 一级特黄录像免费播放全99| lutube成人福利在线观看| 久久久久久久久蜜桃| 久久99精品久久久久久水蜜桃| 亚洲欧美黄色片| 国产成人一级电影| 91精品国产99久久久久久红楼| 国产精品乱码一区二区| 久久aⅴ国产欧美74aaa| 国产欧美精品在线| 亚洲怡红院av| 精品一区二区精品| 91日本在线视频| 国产色综合视频| 国产精品1区2区3区在线观看| 91日本在线观看| 亚洲国产www| 成人高清免费观看| 久久精品一二三区| 国产黄在线播放| 国产欧美精品在线观看| 天天综合色天天综合色hd| av在线之家电影网站| 国产精品国产馆在线真实露脸 | 精品福利在线观看| 欧美黑人经典片免费观看| 三级在线看中文字幕完整版| 欧美日韩在线视频观看| 青青在线视频观看| 久久免费资源| 精品少妇一区二区三区在线视频| 看全色黄大色黄女片18| 怕怕欧美视频免费大全| 自拍偷拍亚洲精品| 欧美日韩一级在线观看| 亚洲激情网址| 国产精品999999| 91影院在线播放| 成人深夜视频在线观看| 久久偷看各类wc女厕嘘嘘偷窃| 黄色的视频在线免费观看| 中文字幕av不卡| 天天做天天躁天天躁| 欧美极品videos大乳护士| 在线观看日韩精品| 久久精品一二三四| 五月国产精品| 久色乳综合思思在线视频| 人人干人人干人人干| 免费看黄色91| 国产九色精品| 日韩在线观看www| 亚洲午夜精品久久久久久久久| 国产成人a亚洲精v品无码| 24小时成人在线视频| 亚洲第一网站免费视频| 成年人视频软件| 影音先锋久久精品| 国产精品香蕉在线观看| 三级网站免费观看| 综合电影一区二区三区| 国产成人久久婷婷精品流白浆| 国产一区二区三区亚洲综合| 亚洲女人初尝黑人巨大| 欧美精品videos极品| 日韩av电影天堂| 精品国产电影| 4438x成人网全国最大| 色婷婷国产精品综合在线观看| 亚洲男人天堂2021| 精品美女久久| 欧美一区二区三区……| www.com在线观看| 国产精品久久久久久久久久久免费看| 激情深爱综合网| 国产精品亚洲综合在线观看 | sm国产在线调教视频| 日本韩国欧美一区| 玖玖爱在线精品视频| 91精品一区二区三区综合在线爱| 国产成人97精品免费看片| 高h放荡受浪受bl| 亚洲私人影院在线观看| 色噜噜狠狠一区二区| 精品一区欧美| 欧美野外猛男的大粗鳮| 精品人妻一区二区三区四区不卡| 国产精品伦理一区二区| 亚洲无吗一区二区三区| 久久99免费视频| 51色欧美片视频在线观看| 亚洲精品视频网| 亚洲美女区一区| 老司机午夜性大片| 99精品视频在线观看播放| 国产精品久久久一区| 国产在线你懂得| 色狠狠av一区二区三区| 受虐m奴xxx在线观看| 亚洲一区二区毛片| 久久国产精品亚洲va麻豆| 182在线播放| 亚洲激情视频在线| 天天操天天摸天天干| 99视频有精品| 久久久久久久久久久福利| 蜜桃精品wwwmitaows| 国产第一区电影| 9i精品一二三区| 欧美群妇大交群中文字幕| 国内毛片毛片毛片毛片毛片| 精品一区二区三区免费视频| 在线丝袜欧美日韩制服| 国产精品欧美一区二区三区不卡| 久久精品亚洲热| 亚洲精品成av人片天堂无码| 一区二区激情视频| 国产精品嫩草69影院| 99在线精品视频在线观看| 久久99精品国产一区二区三区| 欧美大片免费观看网址| 在线观看国产欧美| 99久久精品无免国产免费| 一区二区三区不卡视频| 超碰97在线资源站| 日韩精品久久理论片| 在线电影看在线一区二区三区| 日韩三区四区| 欧美精品激情blacked18| 色呦呦视频在线| 一本一本久久a久久精品综合麻豆| 日本二区在线观看| 精品一区二区三区的国产在线播放| 中国女人做爰视频| 青青视频一区二区| 日韩av免费看| av在线影院| 日韩精品极品视频免费观看| 伊人免费在线观看高清版| 亚洲乱码中文字幕综合| 色哟哟无码精品一区二区三区| 久久精品毛片| 日韩一二区视频| 国产成人三级| 999在线免费观看视频| 欧美成人精品一区二区男人小说| 久久综合国产精品台湾中文娱乐网| 黄频在线免费观看| 精品视频一区 二区 三区| 久久久久久久蜜桃| 欧美极品美女视频| 激情av中文字幕| 免费精品视频最新在线| 欧美精品自拍视频| 国产精品成人av| 老牛影视免费一区二区| 国产色99精品9i| 日韩av片永久免费网站| 日本理论片午伦夜理片在线观看| 亚洲人av在线影院| 亚洲国产福利视频| 欧美日韩不卡一区| 精品免费囯产一区二区三区| 亚洲精品免费在线| 久久久久久久久福利| av影院午夜一区| 久久精品一二三四| 久久精品国产一区二区| 国产乱子夫妻xx黑人xyx真爽| 欧美一区激情| 亚洲欧洲久久| 欧美日韩123| 久久久久久欧美精品色一二三四 | 3d成人动漫网站| 日韩综合在线观看| 婷婷夜色潮精品综合在线| 91精品一区二区三区蜜桃| 国产欧美日韩激情| 中文字幕xxx| 99这里只有久久精品视频| 国产成人精品一区二区在线小狼| 久久99久久99精品免视看婷婷| 国产日产欧美视频| 99精品热6080yy久久| 亚洲精品天堂成人片av在线播放| 天天综合网网欲色| 一本一本久久a久久精品综合妖精| 久久99青青| 清纯唯美一区二区三区| 中文字幕av一区二区三区人| 精品乱子伦一区二区三区| 国产精品nxnn| 国产精品一区二区免费看| 日韩中文字幕视频网| 亚洲japanese制服美女| 91精品视频一区二区| 成人黄色av播放免费| 欧美日韩卡一| 91精品国产综合久久久久久久久| 久久久国产精品网站| 91精品久久久久久久久久久| 久久91视频| 成人黄在线观看| 麻豆国产精品| 岛国视频一区免费观看| 69精品国产久热在线观看| 99久久国产免费免费| 97久久亚洲| 国产一区二区无遮挡| 欧美网色网址| 免费在线观看91| 一区二区小说| 色噜噜一区二区| 久久婷婷蜜乳一本欲蜜臀| 日本黄色播放器| 欧美日韩伊人| 国产精品333| 日韩中文欧美在线| 最新天堂中文在线| 国内在线精品| 色综合色综合色综合| 日本黄色中文字幕| 欧美日韩亚洲综合| 国产美女精品视频国产| 日韩欧美中文字幕公布| 日韩性xxxx| 亚洲深夜福利视频| 国产调教视频在线观看| 高清一区二区三区四区五区| 蜜桃视频动漫在线播放| 国产精品久久久久久久7电影| 亚洲精品第一| 国产亚洲情侣一区二区无| 免费av一区| 看一级黄色录像| 一区二区三区导航| 男女男精品视频站| 国产精品综合av一区二区国产馆| 完美搭档在线观看| 国产女同互慰高潮91漫画| 欧美偷拍第一页| 黑人巨大精品欧美一区二区| 中文字幕在线观看第二页| 欧美一级搡bbbb搡bbbb| 天天爽夜夜爽夜夜爽| 中文字幕少妇一区二区三区| 成年人视频免费在线播放| 国产精品极品尤物在线观看| 麻豆精品国产| 日本一区二区三区视频在线观看 | 久久av高潮av| 亚洲视频www| 看看黄色一级片| 91视视频在线直接观看在线看网页在线看 | 日本在线精品视频| 国产一区一区| 日本电影一区二区三区| 国精品一区二区三区| 超碰超碰在线观看| 久久综合色之久久综合| 欧洲猛交xxxx乱大交3| 91国偷自产一区二区三区成为亚洲经典| av手机免费看| 中文字幕亚洲欧美在线| а√天堂资源官网在线资源| 91久久中文字幕| 欧美理论视频| 日韩网址在线观看| 成人午夜伦理影院| 天天操天天操天天操天天操天天操| 欧美日韩中文字幕在线视频| 国产高清在线观看视频| 中文字幕日韩av| 激情国产在线| 国产精品国产亚洲精品看不卡15| 成人动漫免费在线观看| 欧美s码亚洲码精品m码| 风流少妇一区二区| 国产在线一卡二卡| 91精品国产综合久久久久久漫画 | 国产精品免费视频一区| 亚洲GV成人无码久久精品| 亚洲精品一区在线观看| 天堂成人av| 3d动漫啪啪精品一区二区免费 | 两根大肉大捧一进一出好爽视频| 国产高清在线精品| 日韩欧美123区| 精品视频全国免费看| 成年人视频在线看| 国产高清在线不卡| 欧美精品羞羞答答| 看欧美ab黄色大片视频免费 | 美女精品国产| 在线一区欧美| 欧美精品欧美极品欧美激情| 午夜欧美大尺度福利影院在线看| 亚洲欧美激情另类| 97免费中文视频在线观看| 国产一区调教| 尤物av无码色av无码| 91理论电影在线观看| 欧美亚洲精品天堂| 亚洲色图激情小说| 电影一区电影二区| 亚洲永久一区二区三区在线| 免费成人在线观看| 日韩精品123区| 日韩欧美区一区二| 国产第一页在线| 久精品国产欧美| 日韩黄色小视频| 午夜成人亚洲理伦片在线观看| 欧美精品粉嫩高潮一区二区| 国产精品扒开做爽爽爽的视频| 亚洲自拍欧美色图| 欧美视频成人| 国产精品第七页| 日本大香伊一区二区三区| 99re热久久这里只有精品34| 成人性生交xxxxx网站| 欧美视频一区| 国产在线观看无码免费视频| 91成人国产精品| 国产激情在线视频| 精品国产免费一区二区三区| 久久先锋资源| 欧美特黄一级片| 亚洲精品久久久久中文字幕二区| 日本免费久久| 免费观看黄色大片| 99久久综合色| 中文字幕欧美在线观看| 色综合色综合网色综合| 美女毛片一区二区三区四区| 欧美性受xxxxxx黑人xyx性爽| 一区二区三区精品| 欧美女优在线| 亚洲a在线播放| 性8sex亚洲区入口| 精品无码一区二区三区蜜臀| 亚洲成人a**站| 99久久久国产精品免费调教网站| 麻豆传媒网站在线观看| 久久久夜色精品亚洲| 99久久精品国产色欲| 日韩美女激情视频| 欧美jizzhd精品欧美巨大免费| 国产毛片毛片毛片毛片毛片毛片| 欧美亚洲愉拍一区二区| 日韩伦理电影网站| 色一情一区二区三区四区| 高清国产一区二区三区| 这里只有精品6| 7m精品福利视频导航|