如何在另一个java程序中使用cmd打开/运行java程序

时间:2014-08-01 10:46:54

标签: java

我想通过使用另一个Java程序在cmd中创建一个Javac命令来编译Java程序,然后运行它。我怎么做?有没有我可以使用的课程?

例如这里是cmd     C:\ Users \用户名\文件> Javac HelloWorld.java

如何在java程序中编译HelloWorld.java,然后运行它。

这是我的初始源代码,其中有一个目录和一个Java文件。

public class Test {

    public static void main(String[] args) {
        String directory = "C:\\Users\\UserName\\Documents";
        String fileName = "HelloWorld.java";
    }
}

3 个答案:

答案 0 :(得分:0)

试试这个

try {
    // Execute command
    String command = "cmd /c start cmd.exe";
    Process child = Runtime.getRuntime().exec(command);

    // Get output stream to write from it
    OutputStream out = child.getOutputStream();

    out.write("<execute the java class by mentioning the usual command>");
    out.flush();

    out.close();
} catch (IOException e) {
}

答案 1 :(得分:0)

如果你想使用这个程序编译不同的java文件,你可以试试这个方法。

public class Laj {

  private static void printLines(String name, InputStream ins) throws Exception {
    String line = null;
    BufferedReader in = new BufferedReader(
        new InputStreamReader(ins));
    while ((line = in.readLine()) != null) {
        System.out.println(name + " " + line);
    }
  }

  private static void runProcess(String command) throws Exception {
    Process pro = Runtime.getRuntime().exec(command);
    printLines(command + " stdout:", pro.getInputStream());
    printLines(command + " stderr:", pro.getErrorStream());
    pro.waitFor();
    System.out.println(command + " exitValue() " + pro.exitValue());
  }

  public static void main(String[] args) {
    try {
      runProcess("javac YourDir/HelloWorld.java");
      runProcess("java YourDir.HelloWorld");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("ok");
  }
}

答案 2 :(得分:0)

您可能希望先编译其他源代码。 Java编译器实际上是用Java编写的。您无需调用javac.exe,而是查看javax.tools.ToolProvider.getSystemJavaCompiler() ToolProvider Javadoc

使用它编译源代码文件后,您可以使用类加载器加载编译器类文件并从那里调用代码,可能是通过反射。

总的来说,您要求使用高级用例。