使用Java Runtime.exec在Ubuntu中通过终端触发命令

时间:2012-03-31 03:07:29

标签: java linux ubuntu terminal

这在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 ..

1 个答案:

答案 0 :(得分:3)

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

如何运行:

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();
}

请告诉我这是否有帮助!