在java程序中使用cmd命令

时间:2010-11-08 10:06:43

标签: java

我需要java中的java程序,它使用cmd命令编译其他java程序

7 个答案:

答案 0 :(得分:5)

Runtime.exec( -whatever cmd command you need to execute- )

http://download.oracle.com/javase/6/docs/api/java/lang/Runtime.html

维诺德。

答案 1 :(得分:2)

也许您正在寻找Java Runtime.exec()函数:

exec
public Process exec(String command)
              throws IOException
  

执行指定的字符串命令   在一个单独的过程中。这是一个   便利方法。调用   表单exec(命令)表现在   与调用完全相同的方式   exec(command,null,null)。

答案 2 :(得分:1)

要执行真正的 cmd命令,您需要使用cmd.exe/c Runtime.exec选项启动ProcessBuilder

    String cmd = "dir > t.txt";
    ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", cmd);
    Process process = builder.start();
    process.waitFor();
    System.out.println("done");


要启动像calc.exe这样的可执行文件,您可以直接启动它

    ProcessBuilder builder = new ProcessBuilder("calc.exe");
    Process process = builder.start();
    process.waitFor();
    System.out.println("done");

两个代码示例都缺少IO和异常处理...

答案 3 :(得分:1)

附加说明:

如果使用JDK1.6,您现在可以使用JavaCompiler以编程方式从另一个Java程序进行编译。如果这是你想要实现的目的,你可以从命令行调用你的编译器程序。

答案 4 :(得分:0)

使用cmd可以这样做:

String cmd = "c:\\Programme\\Ghostgum\\gsview\\gsprint.exe"; //what to execute
String prt = "-printer XYZ"; // additional parameters
String dat = "\"" + pfad + "\""; // the file to be passed
ProcessBuilder pb = new ProcessBuilder(cmd, prt, dat);
System.out.println(cmd + " " + prt + " " + dat);
pb.redirectErrorStream(true);
Process ps = pb.start();
ps.waitFor();

答案 5 :(得分:0)

我终于得到了答案。 它实际上编译了一个Java程序。 该计划如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Dos {
    public static void main(String[] args) {
        try {
            String[] command = new String[4];
            command[0] = "cmd";
            command[1] = "/C";
            command[2] = "C:/Program Files/Java/jdk1.6.0_21/bin/javac";//path of the compiler
            command[3] = "d:\\a.java";

            Process p = Runtime.getRuntime().exec(command);

            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            // read the output from the command

            String s = null;
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }

            // read any errors from the attempted command

            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
            System.out.println("I am In try");
        }

        catch (Exception e) {
            System.out.println("I am In catch");
        }
    }
}

答案 6 :(得分:0)

不确定为什么要显式调用shell以编译Java程序。如果你完全确定这是你需要做的,那么就去做吧,并按照其他人给出的建议。但是,如果您只想从Java程序中编译Java代码,那么可以使用Java 6.0(及更高版本)执行此操作:

http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html