1

CFBundleDocumentTypesを使用して、カスタムファイル拡張子をアプリケーションに関連付けようとしています。私の知る限り、これは「機能」しているようです。ファイルをダブルクリックすると、JavaApplicationStubがアプリケーションを起動します。ただし、Javaで設定したApplicationListenerイベントを介してコールバックは登録されません。

デフォルトのファイルの関連付けの設定MacOSX Java Package Makerインストーラーにリストされているコードを使用してファイルの関連付けを行ったところ、ファイルの関連付け自体は正常に表示されますが、ファイルを起動しようとしているアプリケーションスタブのように見えるため、失敗します。

Apple ApplicatinListenerコードをJavaアプリケーションに追加しました( http://developer.apple.com/mac/library/documentation/Java/Reference/1.5.0/appledoc/api/index.html?com/apple/に類似) eawt / Application.html)が、私のアプリケーションがコールバックを受け取ることはないようです。

コードはに似ています

Application.getApplication().addApplicationListener(
  new ApplicationAdapter() { 
    public void handleOpenFile(ApplicationEvent evt) {
      //some logging message here that I never get
    }
  }
);

私もSWTを使用していることを言及する必要があります...

どんな助けでもいただければ幸いです

4

2 に答える 2

1

それはあなたの質問にあまり具体的ではありませんが、いくつかのことが頭に浮かびます:

1)Appleを使用してJavaApplicationStubいるため、起動プロセスからの診断出力は次のように取得される場合があります。

$エクスポートJAVA_LAUNCHER_VERBOSE
$ ./your.app/Contents/MacOS/JavaApplicationStub

2)ここで言及されているAppleのサンプルアプリケーションOSXAdapterを見るかもしれません。

3) Here's a working example of an SWT/Java/Mac application.

于 2010-06-14T00:42:20.193 に答える
1

Unfortunately you can't use the SWT and the eAWT's ApplicationListener at the same time. See this SWT bug. The SWT needs a change from Apple in the JVM, and then I have to change the SWT to use it.

Since you are interested in an open file event, though, you can now do that entirely in SWT across all platforms. In the 3.6 SWT there is a new event SWT.OpenDocument that will fire when a file for your app is double-clicked. See this blog post and search for "SWT.OpenDocument".

于 2010-06-15T22:38:01.390 に答える