【问题标题】:use cmd commands in java program [closed]在java程序中使用cmd命令[关闭]
【发布时间】:2011-05-06 14:09:03
【问题描述】:

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

【问题讨论】:

标签: java


【解决方案1】:
Runtime.exec( -whatever cmd command you need to execute- )

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

葡萄酒。

【讨论】:

  • 对于 JDK 1.5 及更高版本,您可以使用ProcessBuilder (download.oracle.com/javase/1.5.0/docs/api/java/lang/…)
  • 我编辑了你的答案,因为Java中没有RunTime,它是小写的T。注意:我不认为exec可以直接运行cmd命令,你需要运行@987654327 @...
  • 哎呀,感谢您指出大小写不匹配的情况 Carlos.. bt 我想我们应该能够运行任何 cmd 命令,基本上是 shell 命令 rite..
【解决方案2】:

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

exec
public Process exec(String command)
              throws IOException

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

【讨论】:

  • 你能给我一个示例程序吗
【解决方案3】:

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

    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 和异常处理...

【讨论】:

    【解决方案4】:

    补充说明:

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

    【讨论】:

      【解决方案5】:

      使用 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();
      

      【讨论】:

      • 注1:没有运行cmd.exeshell变量根本没有被使用。 2:gsprint.exe 不是 cmd 命令。 3:如果你没有读取标准输出,没有理由调用redirectErrorStream(反正没有错)。
      【解决方案6】:

      不知道为什么要显式调用 shell 来编译 Java 程序。如果您绝对确定这是您需要做的,那么就去做并遵循其他人的建议。但是,如果您只想从 Java 程序中编译 Java 代码,则可以使用 Java 6.0(及更高版本):

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

      【讨论】:

        【解决方案7】:

        我终于得到了答案。 它实际上编译了一个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");
                }
            }
        }
        

        【讨论】:

        • 作为编译器,我拒绝编译这个烂摊子。请使用正确的代码格式(最好是Java Code Conventions)。 :D
        猜你喜欢
        • 1970-01-01
        • 2014-06-28
        • 2018-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 2016-03-05
        相关资源
        最近更新 更多