【问题标题】:Send some input to a Terminal window using Java on Mac OS在 Mac OS 上使用 Java 向终端窗口发送一些输入
【发布时间】:2015-05-08 14:13:00
【问题描述】:

我可以在 Mac OS 或 Windows 上打开一个终端窗口或命令提示符。我想使用我的 java 向该终端或 cmd 窗口发送一个字符串。

  String in = " -i " + "\"" + tfIntdta.getText() + "\"";
  String rst = " - r " + "\"" + tfRstplt.getText() + "\"";
  String out = " -o " + "\"" + tfOutdta.getText() + "\""; 
  String strip = " -s" + "\"" + tfStpdta.getText() + "\"";
  String guistring = "-n gui";
  String wd = "\"" + System.getProperty("user.dir");
  String osver = System.getProperty("os.name");
  String app = "";
    if (osver.contains("Mac")){
       app = wd + "/relap5.x\"";
    } else if (osver.contains("Windows")){
       app = "\\relap5.exe";
    } else if (osver.contains("linux")) {
       app = "/relap5.x";
    }
 String run = app + in + rst + out;

所以字符串看起来像这样。 "/Users/brianallison/Documents/Java/RELAP5 GUI/issrs/relap5.x"-i""-r""-o""

我希望上面的行出现在终端或cmd窗口上并执行。

【问题讨论】:

  • 不能直接执行字符串吗?检查Runtime 的javacod,您可能对Runtime.exec(String command) 或其中一个重载感兴趣。有趣的事实/产品放置:在 Groovy 中,String 有一个 execute 方法,它将字符串作为终端命令运行。
  • 我已经尝试过了,它所做的只是打开终端窗口。 Desktop.getDesktop().open(new File("/Applications/Utilities/Terminal.app")); Runtime.getRuntime().exec(run);
  • 跳过终端打开 - 只需执行字符串,您不必显式打开终端。

标签: java terminal


【解决方案1】:

把你的命令和参数放在一个数组中:

String[] command = {
    "/Users/brianallison/Documents/Java/RELAP5 GUI/issrs/relap5.x",
    "-i", "Choose your input file",
    "-r", "",
    "-o", ""
};

然后使用Runtime#exec(String[] cmdarray)执行:

Runtime.getRuntime().exec(command);

这个答案是在阅读了您今天的另外两个问题herehere 后汇总而成的。

【讨论】:

  • 好的,所以我做了上面的参考,它没有给出错误,但我的程序没有打开。如果我双击我的 .x 程序,它将打开,而无需使用我的 Java GUI。这就是它在 Netbeans 的输出窗口中显示的全部内容。 /Users/brianallison/Documents/Java/RELAP5 GUI/issrs/dist/relap5.x -i "/Users/brianallison/issrs/rs34bil.exe.04.30.2014/run/boiloff.i" -r "/Users/brianallison /issrs/rs34bil.exe.04.30.2014/run/boiloff.r" -o "/Users/brianallison/issrs/rs34bil.exe.04.30.2014/run/boiloff.o"
  • 我的 .x 文件打开一个终端窗口。
  • 对不起,我对 MacOS 不熟悉。也许其他人可以回答您的问题。
  • 有人知道mac和Java吗?
  • 提出一个新问题,您将接触到整个社区。可能只有我会注意到您的评论。
猜你喜欢
  • 2011-05-19
  • 2010-11-12
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
相关资源
最近更新 更多