如何将文件作为参数传递给使用JAR Bundler创建的Java应用程序?

我想将特定文件类型与我的应用程序相关联,因此当我双击此特定类型的文件之一时,我的应用程序将打开。 这很好用,但是我双击的文件不会作为参数传递给我的程序。

例如,如果我将我的应用程序与txt文件关联,我双击todo.txt ,我的应用程序打开,但我不知道我双击了哪个txt文件。

从我可以阅读的内容来看,它应该是如何在OS X上运行的,而不是依赖于默认行为(如何在Windows上运行),我应该使用ApplicationListener.handleOpenFile(); 来自com.apple.eawt 。 然而,当我尝试这样做时,我被告知我不允许这样做:

访问限制:由于对所需库的限制而无法访问ApplicationListener类型/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar

在另一个问题中 ,一个人说他在一些中文网站上找到了解决方案,另一个人说根据Java的许可协议条款,这是不合法的。

我在Mac OS X开发人员库中找不到它,并且在这个网站上看起来有用的任何关于JAR Bundler的链接只是把我发送到Apple开发者网站上的一个死页 。

我错过了什么? 它应该几乎不可能做到这一点,即使它在其他操作系统上是微不足道的吗?

它可能值得一提……因为JAR文件无法与OS X上的程序相关联,所以我使用JAR Bundler创建了一个OS X Application Bundle ; Apple工具专门用于将Java应用程序视为本机OS X应用程序的目的。 使用它可以让我首先将文件类型与我的应用程序相关联。

我已经使用OSXAdapter来获取首选项,关于和退出function。 您可以利用它的内省方法来避免限制。 由于不推荐使用com.apple.eawt.ApplicationListener ,您可以尝试使用com.apple.eawt.OpenFilesHandler