1

Java-Stubを使用せず、Shellscript(Info.plistを介して登録)を使用するJavaアプリケーション用のOSXApp-Bundleがあります。また、ファイル拡張子をInfo.plistに登録しました。

…
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>My File Type Name</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>ext1</string>
            <string>ext2</string>
        </array>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleTypeMIMETypes</key>
        <array>
            <string>application/ext1</string>
            <string>application/ext2</string>
        </array>
    </dict>
</array>
…

これは、LaunchServiceにファイルとプログラムへの関連付けを認識させるために必要なものです。

Apple Develのドキュメントを理解している限り、ファイルを開くハンドラーをJavaに登録して、ファイルをApp-Iconにドラッグして開く必要があります(Java 6アップデート3以降)。

        Application.getApplication().setOpenFileHandler( new OpenFilesHandler() {

            @Override
            public void openFiles( OpenFilesEvent arg0 ) {
                Debug.debug( "Opening a bunch of files on osx." );
                for( File file : arg0.getFiles() ) {
                    Debug.debug( "Opening: " + file.getAbsolutePath() );
                    // Custom open action
                    FileActions.openFile( file );
                }
            }
        } );

私の最初の問題は次のとおりです。このハンドラーはヒットしません-デバッグメッセージがなく、ファイルが開きません。

2番目の問題は関連している可能性があります。関連するファイルをダブルクリックすると、実行されていない場合にアプリが開きます。カスタムシェルスクリプトを使用してアプリを起動しているので、なんらかのパラメーターを追加する必要があると思いました。まず、これが私のスタートスクリプトです。

#!/bin/bash
BASEDIR=$(dirname "$0")
cd "$BASEDIR/../Resources/Java/"
java -Xdock:icon="../ico.icns" -Xmx256m -jar "core/myjar.jar"

テストの目的で、引数リストに「$1」を追加しました-$1はシステムからのPSNです…ファイルを開くイベントをPSNに接続するにはどうすればよいですか-またはそれを行う別の方法があります(カスタムシェルスクリプトを使用) 。

4

1 に答える 1

0

これにはシェルスクリプトを使用できません、AFAIK。開かれたファイルはAppleEventsを使用して送信され、bashにはそれらを受信する方法がありません。

于 2011-03-31T09:17:08.877 に答える