Java Applet中的一些AppleScript不再适用于Mavericks

时间:2014-01-09 08:09:58

标签: java applet applescript osx-mavericks

我对最新的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文件中,清单中包含以下属性:

  • Trusted-Library:true
  • 应用程序名称:TestingAppleScript
  • 权限:所有权限
  • 代码库:*

当我从java命令行运行测试类时,在MacOS X 10.7.5和10.9.1上都可以找到Excel。

当我从Safari运行测试applet时,仍然可以在MacOS X 10.7.5上找到Excel,但在10.9.1上我收到一条错误消息:“Finder收到错误:应用程序未运行”。

我看到这个错误可能会导致脚本执行速度过快,这就是为什么我在脚本中添加了5秒的延迟,但它没有解决问题。

由于我没有任何想法可以尝试,我希望有人能够提供帮助。

1 个答案:

答案 0 :(得分:0)

我终于找到了什么阻塞:Safari中有一个安全选项,表明Java插件可以在给定服务器的不安全模式下运行。激活这个解决了我的问题。