下面是我用来编译一个已经存在的java文件的方法,参考的(http://blog.csdn.net/onlyzhangqin/archive/2008/05/25/2480590.aspx)
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// 建立DiagnosticCollector对象
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler
.getStandardFileManager(diagnostics, null, null);
// java名称
String path1 = "hello.java";
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList(path1)); JavaCompiler.CompilationTask task = compiler.getTask(null,fileManager, diagnostics, null, null, compilationUnits);
// 编译源程序
boolean success = task.call(); 我的要编译的java代码是: import java.io.PrintWriter; public class hello
extends AbstractPackedModel { public void process(PrintWriter writer) throws Exception{
system.out.println("success");
}
}
AbstractPackedModel 类是同目录下的一个类 现在的问题是,我已经编译了AbstractPackedModel(用命令编译) ,然后用上面的方法编译hello.java,报找不到AbstractPackedModel,但是我在命令行编译hello.java却可以通过。不知道是为什么。望指点!谢谢!
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// 建立DiagnosticCollector对象
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler
.getStandardFileManager(diagnostics, null, null);
// java名称
String path1 = "hello.java";
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList(path1)); JavaCompiler.CompilationTask task = compiler.getTask(null,fileManager, diagnostics, null, null, compilationUnits);
// 编译源程序
boolean success = task.call(); 我的要编译的java代码是: import java.io.PrintWriter; public class hello
extends AbstractPackedModel { public void process(PrintWriter writer) throws Exception{
system.out.println("success");
}
}
AbstractPackedModel 类是同目录下的一个类 现在的问题是,我已经编译了AbstractPackedModel(用命令编译) ,然后用上面的方法编译hello.java,报找不到AbstractPackedModel,但是我在命令行编译hello.java却可以通过。不知道是为什么。望指点!谢谢!
Message: 错误:仅当显式请求注释处理时才接受类名称“AbstractPackedModel”