16

JavaアプリケーションをMacOSX実行可能アプリに変換する方法はありますか?

NetBeansを使用してJavaで開発していますが、「dist」フォルダをアプリに「パック」したいと思います(便宜上)

4

8 に答える 8

18

AppleJava拡張機能とそのガイドを使用する

Apple Java Extensionsには、 MacOSXでのJavaアプリケーションの展開とアプリケーションバンドルの作成に関する情報が記載された非常に完全な開発ガイドが含まれています。また、標準のMac OS X UIとの統合のサポートなど、AppleJavaExtensionsの他の側面も紹介します。

その他の参考資料:

于 2012-06-14T17:55:23.067 に答える
11

Javaアプリ
Packrをパッケージ化できるライブラリがあります:https ://github.com/libgdx/packr

JAR、アセット、およびJVMをパッケージ化してWindows(ZIP)、Linux(ZIP)、およびMac OS X(.app)で配布し、ネイティブ実行可能ファイルを追加して、アプリがネイティブアプリであるかのように見せます。

JREを最小限に抑えることもできます。

于 2014-05-05T04:15:45.877 に答える
6

jar2app

Packrは素晴らしいツールですが、当時、「使いやすい」ものが欲しかったので、jar2appが誕生しました。これは古い質問ですが、おそらく他の人がこのプログラムを他の方法よりも使いやすいと思うかもしれません。そうでない場合は、FAQに他の代替手段(Packrなど)への直接参照があります。

于 2017-01-28T00:37:35.720 に答える
4

javapackagerツールを使用してアプリケーションをビルドし、インストーラーにラップすることができます。次のコマンドは、jarファイルをバンドルファイルに変換する方法を示しています。

コマンド

mkdir -p package/macosx
cp Test.icns package/macosx
jdk=$(/usr/libexec/java_home)
$jdk/bin/javapackager -deploy -native dmg \
   -srcfiles Test.jar -appclass package.Test -name Test \
   -outdir deploy -outfile Test -v
cp deploy/bundles/Test-1.0.dmg installer.dmg
ls -l
open installer.dmg

アプリケーションアイコンと詳細情報MacJavaを変更するには。

于 2017-05-23T14:09:20.867 に答える
3

承認された回答のリンクの一部は2020年に利用できなくなったか、適切ではなくなったため、質問から8年が経過しました。今日、作業を確認した私の調査結果を共有したいと思います。

javaに同梱されているツールがあり、javapackagerWindows、Linux、macOSでjavaアプリケーションをパッケージ化できます。

公式マニュアルは次のとおりです:https ://docs.oracle.com/javase/8/docs/technotes/tools/unix/javapackager.html

(ここには他にも役立つツールがあります:https ://docs.oracle.com/javase/8/docs/technotes/tools/ )


Macアプリケーションをパッケージ化するために、次のコマンドを使用しました。

javapackager \
    -deploy \
    -native image \
    -srcdir ./csv-encrypt-tool-mac \
    -srcfiles csv-encrypt-tool.jar \
    -srcfiles dict \
    -srcfiles config \
    -srcfiles log \
    -outdir ./dist \
    -outfile csv-encrypt-tool \
    -appclass some.package.CsvEncToolApp \
    -name "csv-encrypt-tool" \
    -title "csv-encrypt-tool" \
    -nosign \
    -v \
    -BjvmOptions=-Xmx4096m \
    -BmainJar=csv-encrypt-tool.jar \
    -Bicon=icon.icns

そしてこれは説明です:

-deploy \                                       # Assembles the application package for redistribution with sys JRE
-native image \                                 # Build a .app file. If you want a .dmg, use -native dmg
-srcdir ./csv-encrypt-tool-mac \                # directory where my jar and resource files in
-srcfiles csv-encrypt-tool.jar \                # my executable jar, path relative to -srcdir
-srcfiles dict \                                # one of my resource directories, path relative to -srcdir
-srcfiles config \                              # another one of my resource directories, path relative to -srcdir
-srcfiles log \                                 # again, one of my resource directories, path relative to -srcdir
-outdir ./dist \                                # where I want the package to be put
-outfile csv-encrypt-tool \                     # the output file name without extension, the final file (or bundle which is a directory actually) will be csv-encrypt-tool.app
-appclass some.package.CsvEncToolApp \          # the class with main method, which is the entry point of the whole app
-name "csv-encrypt-tool" \                      # the name (not very sure what this is for)
-title "csv-encrypt-tool" \                     # the title (not sure what it is either)
-nosign \                                       # not sign the app since this is just an internal tool, if you want to publish it, signing is necessary
-v \                                            # verbose
-BjvmOptions=-Xmx4096m \                        # I need 4GB max heap size
-BmainJar=csv-encrypt-tool.jar \                # the jar file with main class
-Bicon=icon.icns                                # the icon

コマンドが実行された後dist、パッケージを配置したい場所にいくつかのファイルとディレクトリが作成され、ディレクトリの1つはですbundles。アプリケーションはそこに置かれます。

内部ツールを作成したばかりなので、他の本番環境対応オプションなしで署名してパッケージ化する必要はありません。ヘルプについては、公式マニュアルを参照してください。

これが、私のように、2020年にmacOSでアプリケーションをパッケージ化する方法を知らない他の人たちに役立つことを願っています。

于 2020-10-27T02:06:42.713 に答える
3

jpackageJDK14の時点で、 (JEP-392 )もあります。これを 書いている時点では、まだインキュベーション段階にあり、おそらく本番環境では準備ができていませんが、すでに機能しています。

swtアプリで機能した使用例(必要なすべてのjarファイルがフォルダーにあると想定しfilesます。カスタムリソースフォルダーを提供することもできます--resource-dir):

jpackage --type dmg \
 -i files \
 -n Bigly \
 --main-class com.biglybt.ui.Main \
 --main-jar BiglyBT.jar \
 --java-options -XstartOnFirstThread \
 --mac-package-name BiglyBt \
 --icon app.icns \
 --verbose

完全なオプションリストについては、以下を使用してください。

jpackage --help

警告:バグかどうかはおそらく議論の余地があり、将来のリリースで対処される可能性がありますが、現在のバージョンでは、入力フォルダーをとして指定し-i .、カスタムの宛先を指定しない場合、--destjpackageはすべてをバンドルします現在のフォルダー内...作成したばかりのバンドルを含みます。つまり.、入力フォルダー出力:Dの両方であるため、それ自体が再帰的になります。

于 2021-03-07T10:47:31.103 に答える
0

したがって、これらのオプションはどれも私には機能しませんでした(おそらく、私がOS X 10.15を実行しているため、これらのプロジェクトのほとんどが古いためかもしれません)。Catalinaをインストールすると、Javaアプリを中心に構築した既存のアプリが機能しなくなりました。

最終的に、この投稿は役に立ちました:Automatorを使用して、javaコマンドを実行してjarを起動するスクリプトを実行するだけです。古いAvalonHillボードゲームTitanのJavaバージョンであるColossusを起動するアプリを作りたかったのです。次のようなシェルスクリプトを作成しました。java -Xmx256m -jar /my/path/to/the/game/Colossus.jar net.sf.colossus.appmain.Start次に、そのスクリプトを起動する「シェルスクリプトの実行」のみのアクションを持つAutomatorアプリケーションを作成しました。チャームのように機能し、Antをインストールせず、Java VMをダウンロードする必要のあるコマンドラインアプリもありません。何よりも、Appleツールを使用しているため、新しいバージョンのOSXで動作します。

于 2019-11-28T05:58:42.110 に答える
-1

あなたはこのアプリを試すことができます、それはあなたのjarファイルをMacアプリにバンドルします

編集:使いやすく、Jarファイルとアイコンを選択します。ここでは、スクリーンショットを見ることができます。

https://github.com/aprsn/Mac-App-Creator

于 2018-02-10T17:16:24.317 に答える