亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打包適用于沒有 JRE 的 Mac 和 Windows 的 Jar 文件

打包適用于沒有 JRE 的 Mac 和 Windows 的 Jar 文件

陪伴而非守候 2022-01-12 14:04:34
我在 IntelliJ IDEA 中將我的 javaFX 應用程序構建為jar文件。使用“項目結構 >> 工件 >> + JavaFX 應用程序”,我可以構建包含 JRE 的 .app、.dmg、.pkg、.exe。但是我需要構建沒有捆綁 JRE 的相同文件。當然,我可以使用 JAR,但我想制作自己的圖標和安裝程序。我還嘗試從jar創建 .app 文件夾以手動執行它“ java -jar myJarName.jar ”,但如果我有多個 JDK 版本 - 它總是使用不包含 javaFX 庫的最新(JRE 11)庫,而我的 .app 不不行。但是,如果我使用Jar Launcher.app運行相同的 JAR,它就會完美運行。不知何故,它選擇了正確的 jre 版本。ExcelsiorJet、install4j 和類似的應用程序運行良好,但我的項目是開源的,我不能為此支付 3000 美元。問題是 - 如何為已經安裝 JRE 的用戶構建 MacOs/Windows 原生啟動器 app/dmg/pkg/exe 而不捆綁 JRE?我可以使用 IntelliJ IDEA 來構建這種方式,就像我使用捆綁的 jre 構建的那樣嗎?
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

好的,看起來我找到了一些彎曲的方法來完成這一切。

窗戶解決方案:

在 Windows 上捆綁很容易使用launch4j(僅限 Windows)。它是免費的,創建沒有捆綁 Jre 的.exe也沒有問題。

macOS 解決方案:

對于 MacOS,這有點困難:

  1. 創建 myApplication.app 文件夾并設計它的結構

http://img1.sycdn.imooc.com//61de6fad0001ff1601970166.jpg

編寫啟動器 bash 腳本:在我的情況下,我應該檢測安裝了哪些 Jre 版本并選擇java 1.8和10之間的任何一個

我不知道 bash 腳本語言,我相信我以未優化的方式編寫它。如果有人糾正我,我會很高興。無論如何,它按我想要的方式工作:


#!/bin/sh


# set the working directory

DIR=$(cd "$(dirname "$0")"; pwd) 


# extract first fit java version installed

jre_path=$(/usr/libexec/java_home -V 2>&1 |

while IFS= read -r line

do

    if [[ "$jre_found" ==  "true" ]]; then

        break

    fi

    version=$(echo $line | cut -d ' ' -f 1|sed 's/^ *//;s/ *$//' | cut -d ' ' -f 1 | sed 's/^ *//;s/ *$//')

    major=$(echo $version | cut -d. -f1)

    minor=$(echo $version | cut -d. -f2)

    array=(${line// /}) 

    array_size=${#array[@]}

    let "last_index=array_size-1"

    path=${array[ $last_index ]}


    if [[ $major == 1 ]]; then

        if [[ $minor -gt 7 && $minor -lt 11 ]]; then

            echo $path

            jre_found="true"

        fi

    elif [[ $major -gt 7 &&  $major -lt 11 ]]; then

        echo $path

        jre_found="true"

    fi

done)


# execute our jar file

$jre_path/bin/java -jar "$DIR"/myApp.jar

現在一切都應該通過雙擊myApplication.app來工作。


查看完整回答
反對 回復 2022-01-12
  • 1 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號