ユーザーが.javaファイルを作成し、それをコンパイルして実行できるようにするインターフェースを備えたJavaプログラムを作成しようとしています(本質的に非常に単純化されたIDE)。私はGUIにJavaスイングを使用しており、これまでのところ、インターフェース内から.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 ファイルを実行し、コード内でその出力をキャプチャするにはどうすればよいですか?