我想通过使用另一个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";
}
}
答案 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。
使用它编译源代码文件后,您可以使用类加载器加载编译器类文件并从那里调用代码,可能是通过反射。
总的来说,您要求使用高级用例。