从 Java 运行 AppleScript 时出现“不允许辅助访问”错误

Posted

技术标签:

【中文标题】从 Java 运行 AppleScript 时出现“不允许辅助访问”错误【英文标题】:"is not allowed for assistive access" error when running AppleScript from Java 【发布时间】:2015-09-10 06:19:39 【问题描述】:

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

    使用脚本引擎

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

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

    调用 osascript。在这种情况下,错误看起来像:系统事件出错:osascript 不允许辅助访问。 (-1719)

在可访问性列表中,我有以下内容:SystemUIServer、脚本编辑器、osascript、java、mvn、bash、终端。在脚本编辑器或终端中的 osascript 中运行脚本时,脚本通过且没有任何错误。

还有什么建议我应该检查什么?

【问题讨论】:

【参考方案1】:

我想你回答了你自己的问题。您可以允许对脚本编辑器进行辅助访问(除其他外)。它在脚本编辑器中运行良好。

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

【讨论】:

您可以在我的问题的可访问性列表中看到应用程序列表。脚本编辑器已经存在。不幸的是,添加脚本编辑器以及其他应用程序并不能解决我的问题。所以我的问题是:我的清单中还有什么遗漏? 嗯,好的。好吧,不过,我认为我的答案的另一部分仍然正确。你没有错过任何东西。如果它在脚本编辑器中工作应该没问题。【参考方案2】:

我之前通过使用 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

【讨论】:

"brew install tccutil; sudo tccutil --insert /usr/bin/osascript" 为我完成了这项工作。非常感谢您的提示。【参考方案3】:

我发现,除了 osascript 本身之外,我有时还需要添加调用 osascript 的进程的父进程,而不管错误消息说什么。有时我也必须添加祖父进程。

特别是,/bin/bash 不调用任何辅助 API,但 OSX 想要列出它,即使也列出了 osascript,我也不得不添加 TeamCity 的 agent.jar。

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

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于从 Java 运行 AppleScript 时出现“不允许辅助访问”错误的主要内容,如果未能解决你的问题,请参考以下文章

从 apache Spark 运行 java 程序时出现 ClassNotFound 异常

从命令行运行我的 java 项目时出现问题 (java.lang.NoClassDefFoundError)

从终端运行时出现“java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver”错误

为啥从 Eclipse 运行 Google App 时出现以下错误?

从命令行运行声纳分析时出现链接错误(maven 项目)

使用 YARN 在集群模式下运行 spark 时出现 java.io.FileNotFoundException