自从我升级到 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/