web-dev-qa-db-fra.com

Erreur "n'est pas autorisé pour l'accès d'assistance" lors de l'exécution d'AppleScript à partir de Java

J'ai une configuration Jenkins qui exécute des tests Java pour l'application OS X à l'aide de Maven. Et lorsque j'essaie d'exécuter un AppleScript nécessitant un accès d'assistance, des erreurs différentes apparaissent. J'ai donc essayé d'exécuter AppleScript de deux manières:

  1. Utilisation de ScriptEngine :

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

Dans ce cas, l'exécution du script échoue avec l'erreur suivante: Une erreur de type -10810 s'est produite.

  1. Appeler osascript . Dans ce cas, l'erreur ressemble à ceci: Les événements système ont eu une erreur: osascript n'est pas autorisé à accéder à l'assistance. (-1719)

Dans la liste d'accessibilité, j'ai les éléments suivants: SystemUIServer, éditeur de script, osascript, Java, mvn, bash, terminal. Lors de l'exécution d'un script dans Script Editor ou en osascript à partir de Terminal, script transmis sans erreur.

Des suggestions quoi d'autre devrais-je vérifier?

15
Kirill Aleksandrov

Je pense que vous répondez à votre propre question. Vous pouvez autoriser un accès d'assistance à l'éditeur de script (entre autres). Cela fonctionne très bien dans l'éditeur de script.

Vous pouvez essayer d'ajouter d'autres applications pour avoir un accès d'assistance. Cela pourrait être une option si Script Editor ne vous donne pas envie.

enter image description here

12
Nick Groeneveld

Je constate que j’ai parfois besoin d’ajouter le parent du processus appelant osascript, en plus de celui-ci, quel que soit le message d’erreur. Parfois, je dois aussi ajouter le processus des grands-parents.

En particulier,/bin/bash n'appelle aucune API d'assistance, mais OSX veut la répertorier, même si osascript est également répertorié, et j'ai également dû ajouter l'agent.jar de TeamCity.

Essayez donc d'ajouter votre fichier .jar et vérifiez si ScriptEngine utilise un exécuteur de code intermédiaire que vous devez également activer.

Attention, vous devrez probablement supprimer et ajouter vos entrées si vous changez le binaire (je pense que OSX conserve une sorte de somme de contrôle dans l'entrée binaire finale de sa base de données).

1
android.weasel

J'ai déjà résolu ce problème auparavant en insérant osascript dans le fichier TCC.db à l'aide de tccutil.py

Après l'installation, j'ai lié tccutil.py au chemin.

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

Ensuite, pour autoriser l’accès osascript à contrôler votre ordinateur, utilisez le compand suivant

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

J'ai même ajouté le script lorsque le problème s'est reproduit plus tard.

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

Cela a échoué alors j'ai redémarré ce qui a fonctionné :-)

transcribe-audio-to-text.js utilise actuellement les événements système pour permettre à TextEdit de sauvegarder un fichier texte. Cela fait partie de l'assistant virtuel qui est très alpha à 20160105 mais la source est intéressante. assistant virtuel

1

Une autre solution consiste à écrire le script AppleScript à l'aide de Script Editor, à l'enregistrer en tant qu'application autonome à partir de là et à lui donner un accès d'assistance. Vous pouvez ensuite exécuter l'application selon les besoins à partir d'un autre environnement, tel qu'une application Java ou un flux de travail Automator.

Voir aussi: https://Apple.stackexchange.com/a/346306/264883

0
Beejor