【问题标题】:Java - Expected “"” but found unknown tokenJava - 应为“”,但发现未知标记
【发布时间】:2010-07-15 05:05:08
【问题描述】:

我在尝试从我的 java 应用程序执行 applescript 时收到此错误。代码如下:

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)

感谢您的考虑。

【问题讨论】:

  • 有没有可能其中一个" 实际上是一个看起来像普通引号的特殊字符?
  • 我不这么认为,我通过并确保所有这些都是基本的“

标签: java applescript


【解决方案1】:

基于经验的猜测...也许路径名中的转义空格是您的表演终结者。

尝试从路径没有空格的位置调用脚本或尝试“双重转义”转义的空格,如下所示:

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

出现奇怪错误的一个常见原因是路径名中的空格。所以这是我的第一个猜测,这会给你的脚本带来麻烦。然后我记得有时我们必须“逃避逃脱的反斜杠”。 This article 没有解释,为什么它完全解决了你的问题,但它显示了可能需要多少个反斜杠......

【讨论】:

    【解决方案2】:

    您需要“双重转义”路径中的空格:

            vvvv
    ...\Menu\\\\ Extras\...
    

    【讨论】:

    • ...同时有同样的想法。
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    相关资源
    最近更新 更多