程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AppleScript 命令在终端中有效,但在 Java 中无效大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AppleScript 命令在终端中有效,但在 Java 中无效?

开发过程中遇到AppleScript 命令在终端中有效,但在 Java 中无效的问题如何解决?下面主要结合日常开发的经验,给出你关于AppleScript 命令在终端中有效,但在 Java 中无效的解决方法建议,希望对你解决AppleScript 命令在终端中有效,但在 Java 中无效有所启发或帮助;

我的主要问题是如何让下面提到的命令在java中工作,这个命令的主要问题是它不执行我命令它执行的脚本;有人可以帮我让这个苹果脚本在 Java 中工作吗?

我不明白但由于某种原因命令:

osascript -e 'tell application "Terminal" to do script "cd /Users/benjaminsloutsky/eclipse-workspace/stack/Stack/StackProjects/brother/build && cmake .. && cmake --build . && ./cmake-good"'

在终端中执行,但是每当我尝试使用 Runtime.getRuntime().exec() 命令在 java 中运行它时,它根本不执行(它没有向我显示一个新的终端窗口,其中包含正在执行的代码,但是在终端工作)。这个命令的重点是显示一个带有 main.cpp 文件输出的新终端。这是我的java代码:

final String innerCommand = 
     "cd /Users/benjaminsloutsky/eclipse-workspace/stack/Stack/StackProjects/brother/build && cmake .. && cmake --build . && ./cmake-good";
String[] comm = new String[] {
     "/bin/bash","-c","osascript -e 'tell application \"Terminal\" to do script \"" +
     innerCommand + "\"'"
};
Runtime.getRuntime().exec(comm);

它不运行。为什么会这样,我该如何解决这个问题,这样我的脚本也可以在 javafx.Js 中运行。这个命令的目的是显示一个新的终端窗口,然后运行一个脚本。

我认为我正在正确运行 comm 变量中列出的多个命令,并且我正在使用运行时执行命令。

先谢谢你!

解决方法

Runtime.getRuntime().exec() 不是在 Java 中运行和管理外部进程的最佳方式,而是使用 java.lang.ProcessBuilder 更好。

所以你的代码可以像这样用 java.lang.ProcessBuilder 表示。

import java.io.bufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class CommandExecutor {

    public static void main(String[] args) {
        CommandExecutor executor = new CommandExecutor();
        executor.executeInTerminal("cd /Users/benjaminsloutsky/eclipse-workspace/stack/Stack/StackProjects/Brother/build && cmake .. && cmake --build . && ./cmake-good");
    }

    public void executeInTerminal(String command){
        List<String> cms = new ArrayList<>();
        cms.add("/bin/sh");
        cms.add("-c");
        cms.add("osascript -e 'tell application \"Terminal\" to do script \"" + command + "\"'");

        ProcessBuilder processBuilder = new ProcessBuilder();
        processBuilder.command(cms);
        try {

            Process process = processBuilder.start();

            StringBuilder output = new StringBuilder();

            BufferedReader reader = new BufferedReader(
                new InputStreamReader(process.geTinputStream()));

             String line;
             while ((line = reader.readLine()) != null) {
                output.append(line + "\n");
            }

            Boolean success = process.waitFor(1,TimeUnit.minutES);
            // check the status
        } catch (IOException | InterruptedException E) {
            // do some logging
        }
    }
}

大佬总结

以上是大佬教程为你收集整理的AppleScript 命令在终端中有效,但在 Java 中无效全部内容,希望文章能够帮你解决AppleScript 命令在终端中有效,但在 Java 中无效所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。