import java.io.*;
public class Auto {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
try {
Runtime.getRuntime().exec("javac C:/HelloWorld.java");
Runtime.getRuntime().exec("java C:/HelloWorld > C:/out.txt");
System.out.println("END");
} catch (IOException e) {
e.printStackTrace();
}
}
}
该程序能够编译'HelloWorld.java'文件,但不能执行它(HelloWorld)。 有人可以建议我如何让它工作? 提前致谢! :) 此外,如果输出可以在另一个文本文件中使用'output.txt'。
答案 0 :(得分:4)
运行java
程序时,您必须位于项目根目录中,并运行java package.to.ClassWhichContainsMainMethod
Runtime.getRuntime().exec()
将为您提供Process
,其中包含OutputStream
和InpuStream
已执行的应用程序。
您可以将InputStream
内容重定向到日志文件。
在你的情况下,我会使用这个exec:public Process exec(String command, String[] envp, File dir)
,如下所示:
exec("java HelloWorld", null, new File("C:/"));
将数据从inputStream复制到文件(this post上被盗的代码):
public runningMethod(){
Process p = exec("java HelloWorld", null, new File("C:/"));
pipe(p.getInputStream(), new FileOutputStream("C:/test.txt"));
}
public void pipe(InputStream in, OutputStream out) {
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int writtenBytes;
while((writtenBytes = in.read(buf)) >= 0) {
out.write(buf, 0, writtenBytes);
}
}
答案 1 :(得分:3)
3分。
答案 2 :(得分:0)
您不在java中执行“.java”。您执行一个类文件。所以将第二行改为:
Runtime.getRuntime().exec("cd c:\;java HelloWorld > C:/out.txt");
对于输出,您可能希望使用inputStream,而不是重定向到文件:
InputStream is = Runtime.getRuntime().exec("cd c:\;java HelloWorld").getInputStream();