2010-07-14 55 views
6

试图从我的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) 

感谢您的参与

+1

难道有可能这些'''实际上是一个特殊的字符,看起来像一个平原报价? – 2010-07-14 20:27:59

+0

我不这么认为,我经历了并确保所有这些都是基本的“ – Jakir00 2010-07-14 20:36:11

回答

7

基于经验的猜测......也许在路径名中的逃逸空间是你的表演塞。

尝试从所在的路径没有空格的位置调用脚本或尝试“双逃逸”逃脱的空间,就像这样:

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

的奇怪的错误的一个常见原因是路径名中的空格。所以这是我第一次猜测,这会在脚本中造成麻烦。然后我想起有时候我们必须'逃避反斜杠'。 This article没有解释,为什么它解决了你的问题,但它显示了可能需要多少反斜杠......

6

你需要“双逃生”路径的空间。

 vvvv 
...\Menu\\\\ Extras\... 
+0

......同时有相同的想法。 – 2010-07-14 20:50:28