6

JRE が組み込まれた Swing アプリケーションを出荷する必要があります。アプリケーション + JRE + .bat/.sh を含む zip アーカイブは、Windows と Linux のトリックを行いました。ユーザーは zip をダウンロードして解凍し、アプリケーションを起動します。完全。

しかし今、私は Mac OS X に同じものを提供しなければなりません。私はその件に関して多くの異なることを読んだり、言われたりしました (Mac で JRE を配布することは禁止されています。逆に、Mac には常に JRE があるなど. ..)、だから私は何ができるかについて本当に混乱しています。

誰かがすでにそのようなことをしましたか?Mac アプリケーションの展開をどのように解決しましたか? おまけとして、私のアプリケーションを Mac で配布するのに最適な形式 (zip?) は何ですか?

4

3 に答える 3

3

java.net のappbundlerプロジェクトを見てください。アプリケーションを通常の Mac.appバンドルとしてパッケージ化する Ant タスクを提供し、オプションで組み込み JRE を含めることができます。

Java 6 リリースは Apple によって提供および保守され、Java 7 リリースは Oracle から直接提供される移行期間にまだあるため、Mac 上の Java ランドスケープ全体は現時点では少し混乱しています。a_horse_with_no_name で参照される jarbundler プロジェクト、Mac OS X 10.5/6/7 に含まれる Apple 提供の Java 6 で実行されるバンドルとして JAR をラップするための.appものですが、Oracle Java 7 では実行されません。逆に、appbundler は Oracle をターゲットにします。 Java 7 とその.appバンドルは Java 6 では動作しません。

10.7 または 10.8 を実行している最近の Mac をターゲットにする場合、特に Mac App Store 経由でアプリを配布する場合は、appbundler を使用して JRE のコピーをバンドルする必要があります。ストア経由で配布したくない場合は、組み込みの JRE はオプションです。アプリが Java 6 で実行できる場合、jarbundler で Apple Java 6 をターゲットにすることは、アプリが古い (<= 10.6) Mac で実行できることを意味します。ただし、Java 7 しか搭載されていない最新の Mac を使用している場合は、アプリケーションを実行しようとすると、Java 6 をダウンロードしてインストールするように求められます。

アプリ内のディレクトリ (および該当する場合は組み込み JRE 内の適切なファイル) 内のすべてが zip ファイルで実行許可でマークされている限り.app、アーカイブでを配布しても問題ありません。Ant で構築している場合は、右の sを使用する必要があります。.zipContents/MacOS<zipfileset>filemode

于 2013-01-23T16:41:35.733 に答える
2

最も簡単なアプローチは、 JavaWebStartを介してデプロイされた他のプラットフォームと同じJARを使用します。JREをインストールするためにそれを使用しようとしたことはありません。

よりMacフレンドリーなエクスペリエンスを提供するための最良のアプローチでは、ここで引用されている記事で説明されているように、JARをアプリケーションバンドルでラップする必要があります。推奨される配信形式は、圧縮ディスクイメージです.dmg

記事「MacOSXのJavaデプロイメントオプション」では、両方のオプションを比較しています。このゲームは、どちらの方法でも起動できる例です。

補遺:不思議なことに、Mac OS X Finderは.jnlpファイルをドキュメントとして扱い、デフォルトでJWSランチャーで開きます。頻繁に使用.jnlpするファイルのフォルダーをドックフォルダーに保存して、すばやくアクセスできるようにします。Java設定コントロールパネルでは、キャッシュされたアプリケーションを管理できます。ショートカットをインストールすることを選択すると、宛先フォルダーに単純なMacアプリケーションバンドルが作成され、含まれてInfo.plistいるものは他のフォルダーと同じように編集できます。.plistアプリケーションに必要な機能(画面のメニューバー、ドックの名前とアイコン、JNIパスなど)に応じて、ヒンジをカスタマイズするかどうかを決定します。

于 2013-01-23T17:42:07.537 に答える
1

JRE が既に Mac に存在していると想定しても問題ないと思います。

最良の形式 (つまり、私自身は Mac ユーザーではありません) は、tar.gz(ファイル属性を保持するため) "App" バンドルです。

"jarbundler" ( http://sourceforge.net/projects/jarbundler/ ) を使用して、苦労せずに抽出できる適切な Mac "バンドル" を作成できます。tarバンドルに含まれるスタブが、Antタスク内から「実行可能」としてマークされていることを確認してください。

複数の JRE をインストールすると問題が発生すると思います。その場合、正しいスタブを使用して、アプリケーションが必要とする JRE バージョンを開始する必要があります。私の記憶が正しければ、このスタブは次の場所にあります。/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub

Java7 と jarbundler に問題がある可能性があることを示すページがあります: http://informagen.com/JarBundler/

于 2013-01-23T16:29:10.543 に答える