使用 Java 打开终端并执行 “java -jar”

我正在尝试创建一个可执行.jar,该可执行文件在Mac的终端控制台中重新打开自己。(为了有一个用户界面将命令输入到程序中)


// if program is not open in Terminal:

Runtime.getRuntime().exec("java -jar \"" + path + "\" isInConsole");

System.exit(0);

此代码成功但无缝地执行命令,因此我无法获得控制台 UI。如何让它打开一个可见的终端窗口并在其中执行命令?


编辑:我设法打开了终端,但仍然需要弄清楚如何在其中运行命令。java -jar ...


这有效:


String arg = "cd /Users/potato/Desktop";

Runtime.getRuntime().exec("open -a Terminal --args " + arg);

但这不起作用:


String arg = "java -jar /Users/potato/Desktop/test.jar isInConsole";

Runtime.getRuntime().exec("open -a Terminal --args " + arg);


人到中年有点甜
浏览 235回答 2
2回答

饮歌长啸

我最终使用的代码执行一些AppleScript代码:(正如DanielPryden所建议的那样)public static void main(String[] args){    if(args.length == 0 && System.getProperty("os.name").toLowerCase().contains("mac")){        try {            String path = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getAbsolutePath();            String command = "tell application \"Terminal\"\n" +                     "do script \"java -jar \'" + path + "\' isInConsole\"\n" +                     "close the front window\n" + // because "do script..." opens another window                    "activate\n" +                     "end tell";            String[] arguments = new String[]{"osascript", "-e", command};            Runtime.getRuntime().exec(arguments);            System.exit(0);        } catch (IOException | URISyntaxException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    // program continues...}

慕妹3146593

为了创建进程,类已被 类 所取代。一篇关于类的非常古老但仍然相关的文章(因为它是在将类添加到JDK之前发布的)是 当 runtime.exec() 不会,并且也与类相关。RuntimeProcessBuilderRuntimeProcessBuilderProcessBuilder如本文所述,方法不是“shell”,因此不会解析您作为单个参数提供给它的命令。您可以通过提供 s 数组来帮助该方法进行解析。exec()StringString我建议你阅读这篇文章,以及javadoc for class。java.lang.ProcessBuilder
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java