Java - ожидаемый «» », но обнаружен неизвестный токен - PullRequest
6 голосов
/ 15 июля 2010

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

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

Ответы [ 2 ]

9 голосов
/ 15 июля 2010

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

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

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

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

7 голосов
/ 15 июля 2010

Вам нужно дважды убрать пробел в пути:

        vvvv
...\Menu\\\\ Extras\...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...