4

複数のビルド済み JAR ファイルで構成される Java アプリケーションがあり、それらをさまざまなプラットフォームにデプロイする必要があります。私は最近javafxpackager、JavaFX2 アプリ用の Windows、Mac、および Linux 用のネイティブ インストーラー/バイナリを作成できるものを発見しました。私のアプリはビルド済みで JavaFX2 を使用していないため、パッケージャーをアプリで動作させることができませんでした。

誰かがこれについての経験があり、助けることができますか? javafxpackagerまたは、 JavaFX2 以外のアプリケーションの機能を提供する別のツールはありますか?

4

2 に答える 2

3

あなたはこれを行うことができます。

  1. 現在行っているように、アプリを jar にビルドします。
  2. スイッチを指定して javafxpackager を実行し-createjar、既存の jar に基づいて新しい jar を作成します。新しい jar には、 を使用して jar を実行できるようにするマニフェスト エントリが含まれますjava -jar app.jar
  3. javafxpackager を-deployおよび-nativeスイッチで再度実行し、jar と Java ランタイムをインストーラー付きのネイティブ アプリケーション (自己完結型アプリケーション) としてパッケージ化します。

重要なコマンドは次のとおりです。

echo make an executable jar file
$JAVA_HOME/bin/javafxpackager -createjar -srcdir . -appclass start.HelloWorldSwing -srcfiles HelloWorldSwing.jar -noembedlauncher -outdir . -outfile HelloWorld.jar

echo package the jar and java runtime as a native application with installer
$JAVA_HOME/bin/javafxpackager -deploy -srcdir . -srcfiles HelloWorld.jar -outdir . -outfile HelloWorld -appclass start.HelloWorldSwing -native -name HelloWorld

以下は、Java アプリケーションのビルド、そのネイティブ アプリケーション パッケージの作成、ネイティブ パッケージのインストール、インストールされたアプリケーションの実行に使用できる完全な OS X スクリプトです。このスクリプトは、javafxpackagerを使用してネイティブ アプリケーション パッケージを作成します。インストールされたアプリケーションは、JavaFX を使用しない Swing アプリケーションです (javafxpackager が JavaFX コードだけで動作する必要がないことを示すためです)。また、スクリプト内の javafxpackager コマンドは、以前に jar コマンドで作成された jar を使用して、javafxpackager が生のクラス ファイルで動作する必要がないことを示していますが、以前に他のツールチェーンで構築された jar を入力として受け取ることができます。

Windows アプリや Linux RPM または DEB パッケージなど、他のオペレーティング システムおよびパッケージ形式のパッケージを作成できます。各 OS のインストールをカスタマイズする方法の詳細については、javafxpackager のドキュメントを参照してください。コマンド ライン javafxpackager ツールを使用する場合は、ターゲット オペレーティング システムごとにパッケージ化シェル スクリプトを作成する必要があります。javafx ant パッケージ化タスクを使用すると、複数のオペレーティング システムで同じパッケージング ant スクリプトを使用できます。Ant パッケージ タスクを使用してネイティブ バンドルを構築する例については、Ensemble や SwingInterop など の javafx サンプルのソースを参照してください。

Windows インストーラーをビルドするには、javafxpackager のドキュメントで説明されているように、マシンに追加のフリーウェア ソフトウェアをインストールする必要があります。rpm をビルドするには、rpmbuild パッケージ ユーティリティをマシンにインストールする必要があります。現在、単一のマシンからすべての OS のネイティブ パッケージをビルドすることはできません (そのマシン タイプに固有のネイティブ パッケージのみをビルドできます)。


javafxpackager ネイティブ パッケージは、多くの Java アプリケーション デプロイメント オプションの 1 つにすぎないことに注意してください。その他には、webstart、実行可能な jar ファイル、サード パーティのパッケージ オプション、およびブラウザー組み込みアプリケーションが含まれます。アプリケーション、ユーザー、開発スキル、複雑さの快適さのレベルに最も適したオプションを選択してください。


私が過去に使用した代替ツールチェーンは、UNIX ソフトウェアのネイティブ パッケージ (特に企業向けのサーバー側アプリケーション) で優れた成功を収めましたが、 nexus yum プラグインを使用してnexusリポジトリにデプロイするjenkinsを使用して作成されたrpm mavenプラグインビルドを使用した mavenです。このツールチェーンを使用すると、コード チェックインから、yum依存関係管理を使用して一連のデプロイ可能なパッケージに移行できます。ただし、この代替ツールセットを使用するには少し高度な知識が必要であり、javafxpackager が実行するさまざまなプラットフォームをカバーしていません。

于 2013-02-23T09:25:55.400 に答える
2

動作するJavaFX2アプリがあり、JavaFX Ant Tasks(http://docs.oracle.com/javafx/2/deployment/javafx_ant_task_reference.htm#CIADCBJG)を使用してMacOSX用のアプリケーションバンドルを作成しています。JavaFXを知っています。 Ant Tasksは、JavaFX Packagerツールとまったく同じではありませんが、提供する機能の点では非常に似ています。

JavaFX 2アプリのメインアプリケーションクラスを変更して、JavaFXのものを使用せず、AWTを使用してウィンドウをポップアップするだけです。

import java.awt.*;
public class MainApplication {
    public static void main(String [] args) {
        Frame f = new Frame("Example 1");
        f.show();
    }
}

次に、Antビルドスクリプト(変更なし)を再度実行して、新しいアプリケーションバンドルを作成します。新しいアプリケーションバンドルは、Macで問題なく起動できます。したがって、JavaFX2以外のアプリ、少なくともJavaAWTベースのアプリにはjavafxpackagerを使用できる可能性があると思います。

于 2013-02-23T03:05:36.477 に答える