【问题标题】:firing a command through terminal in Ubuntu using Java Runtime.exec在 Ubuntu 中使用 Java Runtime.exec 通过终端触发命令
【发布时间】:2012-03-31 03:07:29
【问题描述】:

这在 Windows 中相当简单,但在 Linux 中有点棘手。我正在使用

Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "java -classpath /home/4/byz/Orc" });

其中 Orc 是带有 main 函数的类文件。 但什么也没有发生。有什么设置吗?难道我做错了什么 ?

希望java程序在终端运行。

编辑

解决办法如下:

        String[] cmdArray = {"gnome-terminal","java -classpath /home/r/byz/ Orchestrator"};

        try {
            Runtime.getRuntime().exec(cmdArray);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

所以基本上,我们必须使用 gnome-terminal ..

【问题讨论】:

  • 毫无疑问,java -classpath /home/4/byz/Orc 命令不完整。如果要运行 java 类,则必须在 java 命令的末尾提及。您是否尝试过java -classpath $CLASSPATH:/home/4/byz/ Orc 之类的方法 - 请注意Orc 之前的空格
  • 我刚试过你的建议,没用:(
  • 如何从命令行运行Orc
  • 我使用cd byz 转到包含类文件的文件夹,然后我正在做r@r-desktop:~/byz$ java Orc
  • @ringbearer 我解决了这个问题,谢谢。

标签: java linux ubuntu terminal


【解决方案1】:

我相信这已经解决了,但是我会发布一个答案:

如何运行:

executeCommand(new String[]{"/bin/bash", "-c", "java -classpath /home/4/byz/Orc"});

方法:

public String executeCommand(String[] cmd) {
    StringBuffer theRun = null;
    try {
        Process process = Runtime.getRuntime().exec(cmd);

        BufferedReader reader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));
        int read;
        char[] buffer = new char[4096];
        StringBuffer output = new StringBuffer();
        while ((read = reader.read(buffer)) > 0) {
            theRun = output.append(buffer, 0, read);
        }
        reader.close();
        process.waitFor();

    } catch (IOException e) {
        throw new RuntimeException(e);
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
        return theRun.toString().trim();
}

如果这有帮助,请告诉我!

【讨论】:

  • 所以我猜你不仅在运行命令,而且还在读取命令生成的输出?请让我知道是否确实如此。谢谢。
  • 是的,我以前在我的一个应用程序中使用过它。它非常适合返回输出:)
猜你喜欢
  • 2014-06-22
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2013-09-08
  • 2015-06-23
  • 2016-02-09
  • 2014-07-25
  • 2015-12-22
相关资源
最近更新 更多