2010-07-14 7 views
6

estoy recibiendo este error al intentar ejecutar applescript de mi aplicación Java El código es el siguiente:Java - Esperado “"”pero se encontró desconocida símbolo

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

me sale el siguiente error:

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) 

Gracias por su consideración

+1

¿Podría ser posible que uno de esos '" 'es en realidad un carácter especial que simplemente parece un simple citar? –

+0

No lo creo, pasé y me aseguré de que todos sean básicos " – Jakir00

Respuesta

7

Una conjetura basada en la experiencia ... Tal vez el espacio escapado en el nombre de ruta sea el tope de tu show.

intenta llamar a un script desde un lugar donde el camino no tiene espacios o tratar de 'doble escape' el espacio escapado, así:

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

Una razón común de errores extraños son esos espacios en blanco en nombres de ruta. Así que fue mi primera suposición, que esto causa problemas en su secuencia de comandos. Entonces recordé que a veces tenemos que 'escapar de las barras invertidas escapadas'. This article no explica, por qué resolvió exactamente su problema, pero muestra cuántas barras invertidas se pueden necesitar ...

6

Es necesario 'doble escape' del espacio en la ruta:

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

... tenía la misma idea al mismo tiempo. –

Cuestiones relacionadas