tl;dr - 重新安装 apple java support 以恢复对 AppleScript 的支持。
您需要实际检查支持哪些脚本引擎。以下代码返回受支持的脚本引擎,这些是唯一受支持的脚本引擎:
import java.util.List;
import javax.script.*;
public class ListEngines {
public static void main(String args[]) {
ScriptEngineManager sem = new ScriptEngineManager();
for (ScriptEngineFactory factory : sem.getEngineFactories()) {
System.out.println(factory.getEngineName());
System.out.println(factory.getNames());
}
}
}
在 El Cap 上安装 java 6 之前,我得到了两个 Oracle JRE 的以下报告:
当我在 java 8 (oracle) 上运行它时:
$ /usr/libexec/java_home -v 1.8 -e java ListEngines
Oracle Nashorn
[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
Java 7(甲骨文):
$ /usr/libexec/java_home -v 1.7 -e java ListEngines
Mozilla Rhino
[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]
重新安装苹果 JRE - from this apple URL
Java 6(苹果 - 你必须手动重新安装这个):
$ /usr/libexec/java_home -v 1.6 -e java ListEngines
Mozilla Rhino
[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]
AppleScriptEngine
[AppleScriptEngine, AppleScript, OSA]
现在 applescript 支持出现,适用于 oracle VM。
$ /usr/libexec/java_home -v 1.8 -e java ListEngines
AppleScriptEngine
[AppleScriptEngine, AppleScript, OSA]
Oracle Nashorn
[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
所以看起来您需要显式重新安装苹果 JRE 才能在 El Cap 上获得 applescript 支持(可能也适用于旧版本)。
之所以出现 AppleScript 支持,是因为当您安装苹果提供的 JRE 时,OSX 安装了一堆扩展 - 这些库位于 /System/Library/Java/Extensions。其中一个库是AppleScriptEngine.jar(它对应于libAppleScriptEngine.jnilib)。