"不允许辅助访问"从Java运行AppleScript时出错

时间:2015-06-24 07:06:54

标签: java macos maven jenkins applescript

我有一个Jenkins配置,使用Maven为OS X应用程序执行Java测试。当我尝试运行某些需要辅助访问的AppleScript时,会出现不同的错误。所以我试图以两种方式执行AppleScript:

  1. 使用ScriptEngine

    ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName(" AppleScriptEngine"); engine.eval(脚本);

  2. 在这种情况下,脚本执行失败并显示错误:发生了类型-10810的错误。

    1. 调用osascript 。在这种情况下,错误看起来像:系统事件出错:osascript不允许辅助访问。 (-1719)
    2. 在辅助功能列表中,我有以下内容:SystemUIServer,脚本编辑器,osascript,java,mvn,bash,终端。在脚本编辑器中运行脚本或从终端运行osascript时,脚本通过时没有任何错误。

      有什么建议我应该检查一下吗?

4 个答案:

答案 0 :(得分:13)

我想你回答了自己的问题。您可以允许脚本编辑器(以及其他内容)的辅助访问。它在脚本编辑器中工作正常。

您可以尝试添加其他应用程序以获得辅助访问权限。如果脚本编辑器不能满足您的需要,这可能是一个选项。

enter image description here

答案 1 :(得分:1)

我之前通过使用tccutil.py

将osascript插入TCC.db解决了类似问题的问题

安装完成后,我将tccutil.py链接到路径中。

sudo ln -s /source/tccutil/tccutil.py /usr/bin/tccutil.py 

ls -l /usr/bin/tccutil.py 
lrwxr-xr-x  1 root  wheel  26 30 Dec 14:57 /usr/bin/tccutil.py -> /source/tccutil/tccutil.py

然后允许osascript访问来控制你的计算机使用以下compand

sudo tccutil.py --insert /usr/bin/osascript

我甚至在以后再次发生问题时添加了脚本。

sudo tccutil.py --insert $(pwd)/transcribe-audio-to-text.js

失败了所以我重新启动了哪个工作: - )

transcribe-audio-to-text.js目前使用系统事件使TextEdit能够保存文本文件。它是虚拟助手的一部分,在20160105非常alpha,但来源很有趣。 virtual-assistant

答案 2 :(得分:1)

我发现除了osascript本身之外,我有时需要添加调用osascript的进程的父进程,无论错误消息是什么。有时我也要添加祖父母过程。

特别是,/ bin / bash不会调用任何辅助API,但OSX希望它列出,即使osascript也已列出,我也必须添加TeamCity的agent.jar。

因此,请尝试添加.jar文件,并查看ScriptEngine是否使用您还需要启用的中间代码执行程序。

请注意,如果更改二进制文件,您可能必须删除并添加条目(我认为OSX在其数据库条目的最终二进制条目中维护某种校验和)。

答案 3 :(得分:0)

另一种解决方法是使用脚本编辑器编写AppleScript,从那里将其保存为独立应用程序,并为该应用程序提供辅助访问。然后,您可以根据需要从其他环境(例如Java应用程序或Automator工作流程)中运行该应用程序。

另请参阅:https://apple.stackexchange.com/a/346306/264883