Ошибка "не разрешена для вспомогательного доступа" при запуске AppleScript с Java

У меня есть конфигурация Jenkins, которая выполняет тесты Java для приложения OS X с использованием Maven. И когда я пытаюсь запустить AppleScript, для которого требуется вспомогательный доступ, появляются разные ошибки. Поэтому я попытался выполнить AppleScript двумя способами:

  • Использование ScriptEngine:

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

В этом случае выполнение script выполняется с ошибкой: произошла ошибка типа -10810.

  1. Вызов osascript. В этом случае ошибка выглядит так: Системные события получили сообщение об ошибке: osascript не разрешает доступ к помощи. (-1719)

В списке доступности у меня есть следующие вещи: SystemUIServer, script Редактор, osascript, java, mvn, bash, Terminal. При запуске script в редакторе script или в osascript из терминала, script передается без ошибок.

Любые предложения, что еще я должен проверить?

Ответ 1

Думаю, ты отвечаешь на свой вопрос. Вы можете разрешить вспомогательный доступ для редактора Script (среди прочего). Он отлично работает в редакторе Script.

Вы можете попробовать и добавить другие приложения для получения доступа. Это может быть вариант, если Script Editor не дает вам нужды.

enter image description here

Ответ 2

Я решил что-то подобное этой проблеме, вставив osascript в TCC.db, используя tccutil.py

После установки я связал 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

Я даже добавил script, когда проблема повторилась позже.

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

Это не удалось, поэтому я перезагрузил работу: -)

transcribe-audio-to-text.js в настоящее время использует системные события, чтобы TextEdit мог сохранять текстовый файл. Это часть виртуального помощника, который очень альфа на 20160105, но источник интересен. virtual-assistant

Ответ 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