Java ScriptEngineManager 不再适用于 Mountain Lion 的 AppleScript

标签 java applescript osx-mountain-lion

自从我升级到 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);
}

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

最佳答案

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

我还必须更改一些代码:语言似乎不再是“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 上有效...

关于Java ScriptEngineManager 不再适用于 Mountain Lion 的 AppleScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978407/

相关文章:

java - 如何根据限制在java中拆分字符串

java - 如何横切带注释的方法和构造函数?

java - 我们可以向后拆分 Java 字符串吗?

macos - 在 AppleScript 中使用 "~"和 POSIX 路径

java - 使用 Java (OSX) 在终端中调用命令

java - android文档中的 "Inherited constants"和 "Inherited fields"有什么区别?

compare - AppleScript:在值大于 0 之前不要让用户继续

applescript - 通过 AppleScript + USB 温度计阻止我的房间变得太热?

xcode - 始终显示 NSUserNotification

macos - 如何在 Mac OS X Mountain Lion 上构建 mod_jk?