Я получаю эту ошибку при попытке выполнить applescript из моего JAVA-приложения. Код следующие:
String script = "tell application \"Terminal\" to do shell script \"/System/Library/CoreServices/Menu\\ Extras/user.menu/Contents/Resources/CGSession -suspend\" ";
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("AppleScript");
engine.eval(script);
Я получаю следующую ошибку:
Exception in thread "main" javax.script.ScriptException: Expected “"” but found unknown token.
at apple.applescript.AppleScriptEngine.evalScript(Native Method)
at apple.applescript.AppleScriptEngine.eval(AppleScriptEngine.java:342)
at apple.applescript.AppleScriptEngine.eval(AppleScriptEngine.java:313)
at myTestApp.Main.main(Main.java:25)
Спасибо за Ваше внимание.
Догадка, основанная на опыте... Возможно, пробел в имени пути - это ваша заглушка.
Попробуйте вызвать скрипт из места, где путь не содержит пробелов, или попробуйте "дважды переписать" пробел, как например:
"tell application \"Terminal\" to do shell script \"/System/Library/CoreServices/Menu\\\\ Extras/user.menu/Contents/Resources/CGSession -suspend\" "
Частой причиной странных ошибок являются пробелы в именах путей. Поэтому я сначала предположил, что это вызывает проблемы в вашем скрипте. Затем я вспомнил, что иногда нам приходится "экранировать обратные пробелы". Эта статья не объясняет, почему она решила именно вашу проблему, но она показывает, сколько обратных слешей может понадобиться...
Вам нужно "дважды эскейпить" пробел в пути:
vvvv
...\Menu\\\\ Extras\...