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

标签 java macos executable-jar file-association jarbundler

我想将特定文件类型与我的应用程序相关联,因此当我双击该特定类型的其中一个文件时,我的应用程序将打开。这工作得很好,但我双击的文件没有作为参数传递给我的程序。

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

据我所知,这就是它应该在 OS X 上工作的方式,而不是依赖默认行为(它在例如 Windows 上的工作方式),我应该使用 ApplicationListener.handleOpenFile();来自 com.apple.eawt .然而,当我尝试这样做时,有人告诉我不允许这样做:

Access restriction: The type ApplicationListener is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar

another question here ,一个人说他在 some Chinese website 上找到了解决方案,另一个说根据 Java 的许可协议(protocol)条款,这是不合法的。

我在 Mac OS X Developer Library 中找不到任何提及它的地方,以及在 this site about JAR Bundler 上可能有用的任何链接就把我送到a dead page on Apple's Developer site .

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

可能值得一提...因为 JAR 文件不能与 OS X 上的程序相关联,所以我创建了一个 OS X 应用程序包 使用 JAR Bundler ;一种专门用于将 Java 应用程序视为 native OS X 应用程序的 Apple 工具。使用它可以让我首先将文件类型与我的应用程序相关联。

最佳答案

我用过 OSXAdapter偏好、关于和退出功能。您也许可以利用它的内省(introspection)方法来避免限制。作为com.apple.eawt.ApplicationListener已弃用,您可以尝试 com.apple.eawt.OpenFilesHandler相反。

关于java - 如何将文件作为参数传递给使用 JAR Bundler 创建的 Java 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493742/

相关文章:

java - 可执行 jar 的外部属性文件

java - Mongodb 架构

java - 将数组转换为 Spring 的列表

java - 为什么空的 else-if 语句风格不好,我应该如何重写它?

java - 保护数据免遭从 setup.exe 或 jar 中提取

java - Gradle JavaFX - java.lang.NullPointerException : Location is required

java - 复杂物体的推土机映射

objective-c - 如何将我的程序添加到 OS X 系统菜单栏?

java - Java 中的屏幕捕获无法捕获整个屏幕

java - 在 macOS Cocoa 应用程序中嵌入可执行 jar 文件