日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜

發布時間:2024/9/19 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jpackage命令使用場景

使用場景是面向java桌面端程序打包. 可以讓windows/mac 直接雙擊使用java程序,對系統里面有沒有jdk/jre不做要求.

在這里,我們先理一下以前java桌面程序是怎么運行的:

jdk8及以前

這時候的java客戶端程序,主要分兩部分, 一部分是可執行jar包, 一部分是電腦里面要裝jdk/jre , 然后通過

java -jar XXXXX.jar 來運行程序.

jdk9及以后的模塊化

這是java模塊化的一個分界線,其實jdk9,jdk10,我都沒有用過, 我是直接嘗試的jdk11. 在模塊化的基礎上, 項目多了一個文件, moudle-info.java 如下圖所示:

如上圖,所示,主要是 requires , opens , exports 這三個關鍵字.

requires : 當前模塊想要運行的話,需要哪些依賴,相當于在maven引包的基礎上,要再聲明一遍依賴

opens: 當前模塊中的哪些包,可以被反射. 如fxml中要聲明處理的controller , 每當fxml加載的時候,都會去新建一個controller實例, 所以需要opens controller的包名給javafx.fxml

exports: 當前模塊有哪些包,可以被引用. 一般用于別的模塊依賴當前模塊的時候

jdk9及以后的打包方式

在jdk9及以后,打包方式,可以不局限于打jar包,可以把jdk的這些模塊給一起用jlink打成一個鏡像.

如下我用gradle的jlink去打包

最后的成果:

如上所示, 會在build目錄,生成image鏡像文件夾,然后在其中有bin , conf, lib .然后用cmd運行bin目錄中的Sunflower就可以了, 如下所示: 記住這朵Sunflower , 我要讓他盛開在廣大java程序員的桌面,哈哈

可以看到, 這時候除了程序主體存在,還有一個cmd窗口在這里,何其不方便!!! 這時候, jdk13及以后的jpackage命令就派上用場了, 剛好我寫這個的時候, jdk14 early access 版本發布了, 就直接拿jdk14做了實驗

JDK14的jpackage命令

在安裝好jdk14之后,可以使用jpackage -h 命令看下使用說明,如下圖所示

其實這個是在上一部jlink有鏡像之后,對鏡像做了一層封裝.

我最后實驗成功的打包命令是:

/Users/lixiang/soft/jdk-14.jdk/Contents/Home/bin/jpackage --runtime-image image --type dmg --name Sunflower --module red.lixiang.tools.desktopmain/com.platform.tools.desktop.DesktopMain

--runtime-image 后面跟的是文件夾, 就是我們build目錄下的image文件夾

--type 打成什么樣的包, 在mac系統中有 app-image , dmg , pkg三個選項, windows的我沒試,應該是有exe選項

--name 軟件的名字, 這里是Sunflower(向日葵)

--moudle 模塊的名字,相當于以前的Main函數的格式,這里換成了模塊 '包名'/Main函數名

運行后結果如下:

最終如上圖,可以看到生成的dmg文件, 在mac上,進行安裝就可以使用了

項目源碼

一.Sunflower應用還在開發中, 不久后會開放下載.

二. javafx+gradle應用: https://openjfx.io/openjfx-docs/#gradle

三. 項目所用到的判斷系統工具類,讀取/更改host工具類等開源地址如下:

https://github.com/xiaodaojava/sunshine

里面還有很多很多常用的工具類.

總結

以上是生活随笔為你收集整理的cmd命令将web项目打成jar包_2020全网首发!JDK14之jpackage命令尝鲜的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。