假设我有一个Mac应用程序包,我的可执行文件不是基于Cocoa / Objective-C的,但我使用普通的shell脚本有任何好的理由:
在使用主程序(基于GUI)启动java进程之前,shell脚本会执行一些foo。
我现在想在我的java进程中接收到Drop Dock图标的drop事件,但这似乎不起作用。
shell脚本在启动时($0
或$@
)既不接收已删除的文件作为参数列表,也不接收stdin
上的任何输入。
如何将drop事件和已删除文件列表传递给shell脚本和内部执行的任何程序?
答案 0 :(得分:0)
经过长时间的研究后,我在apple mailing list上找到答案:
在调用java命令之前,我需要添加到sh脚本的所有内容:
export CFProcessPath="$0"
这真的很有魅力!
这是我的最终代码:
...
export CFProcessPath="$0"
exec java -jar ...
由于苹果邮件列表上的另一个问题,这不仅适用于处理shell脚本中的drop事件,还适用于通过JNI支持OSX系统服务。