簡體   English   中英

如何從包含 JRE 的 jar for mac os(使用 windows 或 linux)創建可執行文件

[英]How to create an executable file from a jar for mac os (using windows or linux) with a JRE included

各位晚上好。

我正在尋找很多天對我的問題的簡單且不被棄用的答案:

我在我的電腦(Windows)上創建了一個 java 程序。 通過該程序,我創建了一個可運行的 jar,它可以在我的計算機上完美運行。 現在,我想將 jar 轉換為 MAC OS 的可運行文件格式,並在我的應用程序中包含一個 JRE(這樣我的客戶就不必在他的每台計算機上安裝 java)。

經過一些研究,我發現的唯一解決方案太舊(無法使用)或非常復雜(並且沒有足夠的文檔記錄)。

我聽說過 jar2app,但是您必須包含的有關 JRE 的部分並不是很清楚。 很多人也用 launch4j 回答,但它只創建 Windows 可執行文件。

我同時擁有 Linux 和 Windows,但無法訪問 MAC OS 計算機來開發任何東西(只是測試)。 我正在使用 java 1.8。

下面是本文的摘錄,我希望它也適用於 Java-8:

由於此示例使用JAVA_HOME定義運行時子元素,因此請確保為您的環境正確配置它。 例如,在您的.bashrc file中,定義JAVA_HOME如下:

export JAVA_HOME=/usr/libexec/java_home

使用以下步驟修改項目目錄頂部的build.xml文件:

  1. 指定一個名為 env 的環境屬性:

    <property environment="env" />

  2. 在創建包的目標中,使用 env 屬性指定 JRE 在系統上的位置:

    <runtime dir="${env.JAVA_HOME}" />

生成的build.xml文件應如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project name="ButtonDemo" default="default" basedir=".">
    <import file="nbproject/build-impl.xml"/>

<property environment="env" />

<taskdef name="bundleapp"
         classname="com.oracle.appbundler.AppBundlerTask"
         classpath="lib/appbundler-1.0ea.jar" />

<target name="bundle-buttonDemo">
    <bundleapp outputdirectory="dist"
        name="ButtonDemo"
        displayname="Button Demo"
        identifier="components.ButtonDemo"
        mainclassname="components.ButtonDemo">
        <runtime dir="${env.JAVA_HOME}" />
        <classpath file="dist/ButtonDemo.jar" />
    </bundleapp>
</target>

</project>

使用ant bundle-buttonDemo命令創建一個新版本的ButtonDemo.app 生成的版本包括應用程序 package 中的 JRE。 您可以通過檢查應用程序 package 內的 Contents/PlugIns 目錄來確認這一點。

考慮將此運行時插件用於非模塊化應用程序。 或者如果它是模塊化的,有一個類似的插件 github 頁面處於活動狀態,根據我的經驗,問題很快得到解決。 它適用於 Windows、Linux 和 OS X。

即使它使用了jpackage的最新 Java 功能,您仍然應該能夠在使用較新 JDK 版本的jpackage時在較早的 JDK 版本中編譯您的代碼。

我最近更新了一個項目來使用它,歡迎您查看(如果您這樣做,請提供反饋)。 插件網站上還有其他示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM