请使用以下代码snipet帮助我编译和运行java文件。
RunTime rt=RunTime.getRunTime();
Process p=rt.exec("//what to write here for compilation of java file");
然后我将如何通过getInputStream()捕获响应。
请告诉我。提前致谢
答案 0 :(得分:1)
实际上,从Java 6开始,最好使用ToolProvider
api并以编程方式使用编译器:
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
DiagnosticListener<? super JavaFileObject> listener =
new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager javaFileManager =
javac.getStandardFileManager(listener, Locale.getDefault(), charSet);
javaFileManager.setLocation(StandardLocation.SOURCE_PATH, sourcePaths));
javaFileManager.setLocation(StandardLocation.CLASS_PATH, classPath);
javaFileManager.setLocation(StandardLocation.CLASS_OUTPUT, outputPaths);
CompilationTask task = javac.getTask(
null, // no output writer
javaFileManager,
null, // no Diagnostic Listener
Arrays.asList("-source", "1.6", "-target", "1.6"),// source level Java 1.6
null, // no APT processors
sources
);
task.call();
如果您想处理输出,可以传入自定义DiagnosticListener
。
答案 1 :(得分:0)
您调用javac.exe
来编译Java。
您应该使用Process来执行它:
http://www.exampledepot.com/egs/java.lang/Exec.html
http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part3/Chapter23/runExtProg.html