为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

人到中年有点甜 2022-08-17 15:33:37
我正在尝试创建一个可执行.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);
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我最终使用的代码执行一些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...

}


查看完整回答
反对 回复 2022-08-17
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

为了创建进程,类已被 类 所取代。一篇关于类的非常古老但仍然相关的文章(因为它是在将类添加到JDK之前发布的)是 当 runtime.exec() 不会,并且也与类相关。RuntimeProcessBuilderRuntimeProcessBuilderProcessBuilder

如本文所述,方法不是“shell”,因此不会解析您作为单个参数提供给它的命令。您可以通过提供 s 数组来帮助该方法进行解析。exec()StringString

我建议你阅读这篇文章,以及javadoc for class。java.lang.ProcessBuilder



查看完整回答
反对 回复 2022-08-17
  • 2 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号