也是参考了网上的一些帖子,但发现有些实现并不管用,此处总结记录下。

        刚开始的尝试的是通过 scriptEngine 来执行 appleScript,但并不管用。代码如下:

public static void main(String[] args) {

    String script = "set x to 20\n  get x";
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("AppleScript");

    try {
        engine.eval(script);
    } catch (ScriptException e) {
        e.getMessage();
    }            
}

        执行后,控制台报错如下:

        开始以为是 appleScript 写法的问题,换了大小写以及 ”AppleScriptEngine“ 等几种写法发现都不行,开始试着看支持哪几类 engine。看了下源码,还真有这么个方法:

ScriptEngineManager mgr = new ScriptEngineManager();
List<ScriptEngineFactory> engineList = mgr.getEngineFactories();

System.out.println(engineList);
for (ScriptEngineFactory engine : engineList) {
    System.out.println(engine);
}

         执行结果如下:

        只支持一种 engine,也就是 javaScript,此处各位可以自行执行下,就不演示了。看来这条路已经走不通了,那么通过终端执行命令行试试呢? 

String script = "set x to 20\n get x";
ProcessBuilder pb = new ProcessBuilder("osascript", "-e", script);
pb.inheritIO();
            
try {
    pb.start();
} catch (IOException e) {
    System.out.println(e.getMessage());
}

        执行结果如下:

        bingo!看来在 java 中通过命令行执行时可以的哈!

        以上,欢迎交流~ 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐