自从升级到Mountain Lion以来,我无法通过Java ScriptEngineManager运行AppleScript代码。

在Apple页面(link)上找到的示例代码为engine对象返回null。

public static void main(String[] args) throws Throwable {
    String script = "say \"Hello from Java\"";

    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("AppleScript");
    engine.eval(script);
}

有人知道有什么解决方法吗?

最佳答案

我通过在jar的文件夹“META-INF/services”中添加名为“javax.script.ScriptEngineFactory”的文件来工作,如ytw所示。

我还必须更改一些代码:语言似乎不再是“AppleScript”,而是“AppleScriptEngine”。所以这应该工作:

    public static void main(String[] args) throws Throwable {
        String script = "say \"Hello from Java\"";

        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("AppleScriptEngine");
        engine.eval(script);
    }

至少这在我的JDK 1.7.45的MacOS X Mavericks上有效...

07-24 18:46