it-swarm.com.ru

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

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

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

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

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

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

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

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

15
Kirill Aleksandrov

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

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

enter image description here

12
Nick Groeneveld

Я обнаружил, что иногда мне нужно добавить родителя процесса, который вызывает osascript, в дополнение к самому osascript, независимо от того, что говорится в сообщении об ошибке. Иногда я должен добавить процесс бабушки и дедушки тоже.

В частности,/bin/bash не вызывает никаких вспомогательных API, но OSX хочет, чтобы он был в списке, хотя osascript также есть в списке, и мне пришлось добавить agent.jar из TeamCity.

Поэтому попробуйте добавить свой файл .jar и посмотрите, использует ли ScriptEngine промежуточный исполнитель кода, который вам также нужно включить.

Помните, что вам, вероятно, придется удалить и добавить свои записи, если вы измените двоичный файл (я думаю, OSX поддерживает какую-то контрольную сумму в последней двоичной записи в своей записи базы данных).

1
android.weasel

Я решил нечто подобное раньше, вставив 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 для управления вашим компьютером, используйте следующую команду

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

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

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

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

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

1
Keith John Hutchison

Другой обходной путь - написать AppleScript с помощью Script Editor, сохранить его как отдельное приложение и предоставить ему вспомогательный доступ. Затем вы можете запускать приложение по мере необходимости из другой среды, такой как Java-приложение или рабочий процесс Automator.

Смотрите также: https://Apple.stackexchange.com/a/346306/264883

0
Beejor