我正在尝试编写一个带有接口的 java 程序,该接口允许用户创建 .java 文件并编译和运行它(本质上是一个非常简单的 IDE)。我正在为 gui 使用 java swing,并且到目前为止能够将接口内的 .java 文件编译成 .class 文件。我一直在研究如何从 java 代码中运行 .class 文件,但找到了很多我无法工作的答案。下面是编译的相关代码:
File javaFile = new File( "test1.java" );
String code = entry.getText(); // get text entered by user in GUI
try{
PrintWriter writer = new PrintWriter( javaFile ); // write text to .java file
writer.print( code );
writer.close();
}
catch( FileNotFoundException e ){
System.err.println( e );
}
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<File> sourceFileList = new ArrayList<File>();
sourceFileList.add( javaFile );
StandardJavaFileManager fileManager = compiler.getStandardFileManager( null, null, null );
Iterable<? extends JavaFileObject> javaSource = fileManager.getJavaFileObjectsFromFiles( sourceFileList );
CompilationTask task = compiler.getTask(null, fileManager, null, null, null, javaSource);
task.call(); // compile .java file into .class file
如何运行已编译的 .class 文件并在我的代码中捕获其输出?