Java ScriptEngineManager不再适用于Mountain Lion的AppleScript

dej*_*now 9 java applescript osx-mountain-lion

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

Apple页面(链接)上的示例代码为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);
}
Run Code Online (Sandbox Code Playgroud)

有人知道任何变通方法吗?

Alb*_*ban 4

我通过在我的 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);
    }
Run Code Online (Sandbox Code Playgroud)

至少这可以在我的带有 JDK 1.7.45 的 MacOS X Mavericks 上运行...

  • 您忘记提及必须在“META-INF/services/javax.script.ScriptEngineFactory”文件中添加以下行: apple.applescript.AppleScriptEngineFactory (4认同)