[英]AppleScript via Java on Mac OS X El Capitan
在El Capitan之前,java程序可以使用ScriptEngineManager
調用AppleScript,如下所示:
ScriptEngine se = new ScriptEngineManager().getEngineByName("AppleScript");
然后設置屬性並使用se.eval
方法執行腳本。
更新為El Capitan后,上面顯示的構造方法語句返回null
我正在使用Oracle的最新Java 8實現。 想知道是否有人遇到過這個問題以及如何解決?
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(Oracle):
$ /usr/libexec/java_home -v 1.7 -e java ListEngines
Mozilla Rhino
[js, rhino, JavaScript, javascript, ECMAScript, ecmascript]
重新安裝 Apple JRE之后- 從此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]
現在出現了對Oracle VM的applescript支持 。
$ /usr/libexec/java_home -v 1.8 -e java ListEngines
AppleScriptEngine
[AppleScriptEngine, AppleScript, OSA]
Oracle Nashorn
[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
因此,看起來您需要明確地重新安裝apple JRE以獲得El Cap上的applescript支持(可能也適用於較早的版本)。
之所以出現AppleScript支持,是因為在安裝JRE提供的Apple時,OSX安裝了一堆擴展程序-這些庫位於
/System/Library/Java/Extensions
。 這些庫之一是AppleScriptEngine.jar
(與之對應的libAppleScriptEngine.jnilib
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.