2010-07-14 7 views
6

Je reçois cette erreur lorsque vous essayez d'exécuter AppleScript de mon application Java Le code est le suivant:Java - attendu « " » mais trouvé inconnue jeton

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); 

Je reçois l'erreur suivante:

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) 

Merci pour votre considération

+1

Serait-il possible que l'un de ces '' 'est en fait un caractère spécial qui ressemble à une plaine citation? –

+0

Je ne pense pas, je suis allé à travers et s'est assuré que tous sont basiques " – Jakir00

Répondre

7

Une estimation basée sur l'expérience ... Peut-être que l'espace échappé dans le chemin est votre bouchon de spectacle.

Essayez d'appeler un script à partir d'un endroit où le chemin n'a pas d'espaces ou d'essayer de « double évasion », l'espace échappé, comme ceci:

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

Une raison commune pour les erreurs étranges sont ces espaces dans les chemins. Donc, c'était ma première supposition, que cela provoque des problèmes dans votre script. Puis je me suis souvenu que parfois nous devions «échapper aux backslashes échappés». This article n'explique pas, pourquoi il a résolu exactement votre problème, mais il montre combien de barres obliques inverses peuvent être nécessaires ...

6

Vous devez « double évasion » l'espace dans le chemin.

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

... a eu la même idée en même temps. –