2010-07-14 33 views
6

Tôi nhận được lỗi này khi cố gắng thực hiện AppleScript từ ứng dụng java của tôi Mã này được như sau:Java - Dự kiến ​​“"”nhưng tìm thấy rõ dấu hiệu

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

tôi nhận được lỗi sau:

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) 

Cảm ơn sự quan của bạn

+1

Có thể là một trong số đó thực sự là một ký tự đặc biệt trông giống như đồng bằng –

+0

Tôi không nghĩ như vậy, tôi đã đi qua và đảm bảo tất cả chúng là cơ bản " – Jakir00

Trả lời

7

Đoán dựa trên trải nghiệm ... Có thể không gian thoát trong tên đường dẫn là nút hiển thị của bạn.

Cố gắng gọi một kịch bản từ một địa điểm nơi con đường không có khoảng trắng hoặc cố gắng để 'đúp escape' không gian trốn thoát, như vậy:

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

Một lý do phổ biến cho các lỗi lạ là những khoảng trống đó trong tên đường dẫn. Vì vậy, đó là phỏng đoán đầu tiên của tôi, điều này gây ra rắc rối trong kịch bản của bạn. Sau đó, tôi nhớ rằng đôi khi chúng ta phải 'thoát khỏi các dấu gạch chéo ngược thoát'. This article không giải thích, tại sao nó giải quyết chính xác vấn đề của bạn, nhưng nó cho thấy có bao nhiêu dấu gạch chéo ngược có thể cần ...

6

bạn cần phải 'đúp escape' không gian trong đường dẫn:.

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

... có ý tưởng tương tự cùng một lúc. –

Các vấn đề liên quan