我对最新的MacOS X版本有疑问:Mavericks。我曾经从Java applet调用AppleScript,一切都在MacOS X 10.7.5上运行良好。去小牛队,我不得不做一些改变让AppleScriptEngine
再次到达,但即使这样,我正在运行的脚本也会返回错误。
这是我尝试过的: 我的一小段代码:
private static final String SCRIPT =
"try\n"
+ " tell application \"Finder\"\n"
+ " delay 5\n"
+ " if exists application file id \"XCEL\" then return \"Excel found\"\n"
+ " end tell\n"
+ "on error errStr number errorNumber\n"
+ " error errStr number errorNumber\n"
+ "end try";
static void checkAppleScript() {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine appleScript = mgr.getEngineByName("AppleScript");
if (appleScript != null) {
JOptionPane.showMessageDialog(null, "AppleScript found: " + appleScript);
try {
JOptionPane.showMessageDialog(null, appleScript.eval(SCRIPT));
} catch (ScriptException se) {
JOptionPane.showMessageDialog(null, se.getMessage());
}
} else {
JOptionPane.showMessageDialog(null, "NO AppleScript engine");
}
}
我把它放在一个签名的jar文件中,清单中包含以下属性:
当我从java命令行运行测试类时,在MacOS X 10.7.5和10.9.1上都可以找到Excel。
当我从Safari运行测试applet时,仍然可以在MacOS X 10.7.5上找到Excel,但在10.9.1上我收到一条错误消息:“Finder收到错误:应用程序未运行”。
我看到这个错误可能会导致脚本执行速度过快,这就是为什么我在脚本中添加了5秒的延迟,但它没有解决问题。
由于我没有任何想法可以尝试,我希望有人能够提供帮助。
答案 0 :(得分:0)
我终于找到了什么阻塞:Safari中有一个安全选项,表明Java插件可以在给定服务器的不安全模式下运行。激活这个解决了我的问题。