JavaApplicationStub与CFBundleDocumentTypes(JavaAppl

2019-10-23 03:51发布

我试图用CFBundleDocumentTypes与我的应用程序自定义的文件扩展名关联。 据我所知,这似乎是“工作” - JavaApplicationStub启动我的应用程序时,我双击该文件。 但是,没有回调是通过在java中了ApplicationListener事件我设置注册。

我以前在列出的代码设置默认文件关联的Mac OS X Java包设备安装做文件关联,以及文件关联本身似乎很好,但它好像它是应用程序存根试图启动文件,从而不能。

我加入了苹果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 ...

任何帮助,将不胜感激

Answer 1:

不幸的是,你不能使用SWT和eAWT的ApplicationListener在同一时间。 看到这个SWT错误 。 在SWT需要来自苹果在JVM的变化,然后我不得不改变使用它的SWT。

既然你有兴趣在一个打开的文件的事件,但是,你现在可以做的是完全跨平台的SWT。 在3.6 SWT有一个新的事件SWT.OpenDocument当你的应用程序文件是双击,将触发。 看到这个博客帖子 ,搜索“SWT.OpenDocument”。



Answer 2:

这不是很具体的你的问题,但有一些事情要想到:

1)由于使用的是苹果公司的JavaApplicationStub ,可以如下获得从发射过程诊断输出:

$ export JAVA_LAUNCHER_VERBOSE
$ ./your.app/Contents/MacOS/JavaApplicationStub

2)你可以看看苹果的应用实例, OSXAdapter ,提到这里 。

3)这是一个工作例子的SWT / Java的/ Mac的应用程序。



文章来源: JavaApplicationStub with CFBundleDocumentTypes