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

<p>у меня есть конфигурация jenkins, которая выполняет тесты java для приложения os x, используя maven. и когда я пытаюсь запустить какой-то applescript, для которого требуется вспомогательный доступ, появляются разные ошибки. поэтому я попытался выполнить applescript двумя способами:</p><ol> <li><p><strong> использование scriptengine </strong>:</p> <p>scriptenginemanager mgr = new scriptenginemanager (); scriptengine engine = mgr.getenginebyname ("applescriptengine"); engine.eval (script);</p></li> </ol><p>в этом случае выполнение сценария завершается с ошибкой: произошла ошибка типа -10810.</p><ol start="2"> <li><strong> вызов osascript </strong>. в этом случае ошибка выглядит так: системные события получили ошибку: osascript не разрешен вспомогательный доступ. (-1719)</li> </ol><p>в списке доступности у меня есть следующие вещи: systemuiserver, script editor, osascript, java, mvn, bash, terminal. при запуске скрипта в редакторе скриптов или в osascript из терминала, скрипт проходил без ошибок.</p><p>любые предложения, что еще я должен проверить?</p>

<p>я думаю, что вы ответите на свой вопрос. вы можете разрешить вспомогательный доступ для редактора скриптов (среди прочего). он отлично работает в редакторе скриптов.</p><p>вы можете попробовать и добавить другие приложения, чтобы иметь вспомогательный доступ. это может быть вариант, если редактор скриптов не дает желаемого результата.</p><p><img src="https://i.stack.imgur.com/bfvwx.png" alt="enter image description here"></p>

<p>я обнаружил, что иногда мне нужно добавить родителя процесса, который вызывает osascript, в дополнение к самому osascript, независимо от того, что говорится в сообщении об ошибке. иногда я должен добавить процесс бабушки и дедушки тоже.</p><p>в частности,/bin/bash не вызывает никаких вспомогательных api, но osx хочет, чтобы он был в списке, хотя osascript также есть в списке, и мне пришлось добавить agent.jar из teamcity.</p><p>поэтому попробуйте добавить свой файл .jar и посмотрите, использует ли scriptengine промежуточный исполнитель кода, который вам также нужно включить.</p><p>помните, что вам, вероятно, придется удалить и добавить свои записи, если вы измените двоичный файл (я думаю, osx поддерживает какую-то контрольную сумму в последней двоичной записи в своей записи базы данных).</p>

<p>я решил нечто подобное раньше, вставив osascript в tcc.db, используя <a href="https://github.com/jacobsalmela/tccutil">tccutil.py</a> </p><p>после установки я связал tccutil.py в путь.</p><pre><code>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 </code></pre><p>затем, чтобы разрешить доступ к osascript для управления вашим компьютером, используйте следующую команду</p><pre><code>sudo tccutil.py --insert /usr/bin/osascript </code></pre><p>я даже добавил сценарий, когда проблема повторилась позже.</p><pre><code>sudo tccutil.py --insert $(pwd)/transcribe-audio-to-text.js </code></pre><p>это не удалось, поэтому я перезагрузил, который работал :-)</p><p>transcribe-audio-to-text.js в настоящее время использует системные события, чтобы textedit мог сохранять текстовый файл. это часть виртуального помощника, которая очень альфа на 20160105, но источник интересен. <a href="https://bitbucket.org/csmu/virtual-assistant">виртуальный помощник</a> </p>

<p>другой обходной путь - написать applescript с помощью script editor, сохранить его как отдельное приложение и предоставить ему вспомогательный доступ. затем вы можете запускать приложение по мере необходимости из другой среды, такой как java-приложение или рабочий процесс automator.</p><p>смотрите также: <a href="https://apple.stackexchange.com/a/346306/264883">https://apple.stackexchange.com/a/346306/264883</a> </p>