【发布时间】:2015-05-25 01:12:41
【问题描述】:
我正在尝试编写一个带有接口的 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 文件并在我的代码中捕获其输出?
【问题讨论】:
-
这里有一个与您的实际问题无关的建议:不要那么宽泛!不要问一般性建议,问一个我们可以回答的具体问题:诸如“如何运行编译后的文件并捕获输出?”之类的问题。 (顺便说一下,我认为这里已经介绍过)
标签: java classloader javacompiler