簡體   English   中英

在Mac OS X El Capitan上通過Java編寫AppleScript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM