【问题标题】:AppleScript via Java on Mac OS X El Capitan在 Mac OS X El Capitan 上通过 Java 编写 AppleScript
【发布时间】:2015-10-03 14:30:47
【问题描述】:

在 El Capitan 之前,java 程序可以使用 ScriptEngineManager 调用 AppleScript,如下所示:

ScriptEngine se = new ScriptEngineManager().getEngineByName("AppleScript");

然后使用se.eval方法设置属性并执行脚本。

更新到El Capitan后,上面显示的构造函数语句返回null

我正在使用 Oracle 的最新 Java 8 实现。想知道有没有人遇到过这个问题以及如何解决?

【问题讨论】:

    标签: java osx-elcapitan


    【解决方案1】:

    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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2016-10-12
      • 2017-01-25
      • 2016-12-15
      相关资源
      最近更新 更多