Java ScriptEngineManager 不再适用于 Mountain Lion 的 AppleScript [英] Java ScriptEngineManager no longer works with Mountain Lion's AppleScript

查看:30
本文介绍了Java ScriptEngineManager 不再适用于 Mountain Lion 的 AppleScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Ever since I upgraded to Mountain Lion, I can't run my AppleScript code through the Java ScriptEngineManager.

在 Apple 页面(link)上找到的示例代码为 engine 对象.

The sample code found on Apple's page (link) returns null for the engine object.

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

有人知道任何解决方法吗?

Anybody know of any workarounds?

推荐答案

我通过在我的 jar 文件夹META-INF/services"中添加一个名为javax.script.ScriptEngineFactory"的文件来使它工作,如ytw所示.

I got it working by adding a file named "javax.script.ScriptEngineFactory" in the folder "META-INF/services" of my jar as ytw indicated.

我还必须更改一些代码:语言似乎不再是AppleScript"而是AppleScriptEngine".所以这应该有效:

I also have to change a bit of code: language seems to no longer be "AppleScript" but "AppleScriptEngine". So this should work:

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

至少这适用于我的 MacOS X Mavericks 和 JDK 1.7.45...

At least this works on my MacOS X Mavericks with JDK 1.7.45...

这篇关于Java ScriptEngineManager 不再适用于 Mountain Lion 的 AppleScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆