Java - Ожидаемый “"” но найденный неизвестный маркер

Я получаю эту ошибку при попытке выполнить 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)

Спасибо за Ваше внимание.

6
задан Péter Török 14 July 2010 в 20:26
поделиться

2 ответа

Догадка, основанная на опыте... Возможно, пробел в имени пути - это ваша заглушка.

Попробуйте вызвать скрипт из места, где путь не содержит пробелов, или попробуйте "дважды переписать" пробел, как например:

"tell application \"Terminal\" to do shell script \"/System/Library/CoreServices/Menu\\\\ Extras/user.menu/Contents/Resources/CGSession -suspend\" "

Частой причиной странных ошибок являются пробелы в именах путей. Поэтому я сначала предположил, что это вызывает проблемы в вашем скрипте. Затем я вспомнил, что иногда нам приходится "экранировать обратные пробелы". Эта статья не объясняет, почему она решила именно вашу проблему, но она показывает, сколько обратных слешей может понадобиться...

9
ответ дан 8 December 2019 в 14:39
поделиться

Вам нужно "дважды эскейпить" пробел в пути:

        vvvv
...\Menu\\\\ Extras\...
7
ответ дан 8 December 2019 в 14:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: