7

Ant を使用して Mac OS X 用の Java FX バンドルを作成しました。2 つのファイルでバンドルを作成します - 1. MyApplication.app 2. MyApplication.dmg

両方のファイルを他のフォルダーにコピーしたいので、build.xml にコマンドを -

<copy todir="my_new_folder">
   <fileset dir="old_folder\bundles"/>
</copy>

「my_new_folder」で両方のファイルを正常にコピーしています。しかし、「my_new_folder」から .app を実行すると、「old_folder」から正しく起動しているにもかかわらず、アプリケーションが起動しません。

コピーしたアプリを比較すると、 MacOSフォルダー ("Show Package Contents/Contents/MacOS")にある exec (Unix Executable File) が保持されず、ドキュメント ファイルでその種類が変更されていることがわかりました。

単純なコピーディレクトリを実行しているだけなので、その種類をUnix実行可能ファイルに保存する方法。

ありがとう、ニーラム・シャルマ

4

1 に答える 1

8

ant copyタスク ガイドに記載されているように:

Unix注:ファイルがコピーされるとき、ファイルのパーミッションは保持されません。代わりに、デフォルトのUMASK権限で終了します。これは、現在のJavaランタイムでファイル権限を照会または設定する手段がないことが原因です。権限を保持するコピー機能が必要な場合は、代わりにこれを使用してください。

<exec executable="cp" ... >

したがって、あなたの場合、次のように置き換えます<copy>

<exec executable="cp">
    <arg line="-R old_folder/bundles my_new_folder"/>
</exec>

(このantスクリプトがWindowsで使用されている場合でも、スラッシュを使用する必要があることに注意してください)。

于 2013-01-30T13:53:42.123 に答える