我在这里处境非常尴尬。 我正在开发一个'Eclipse插件',它必须将.java文件'编译'成.class文件(或者甚至是jar)。
我正在尝试使用Java Compiler API来执行以下操作:
public class Compiler {
private JavaCompiler _javaCompiler;
private StandardJavaFileManager _sjfm = null;
private Files[] _filesIn;
public Compiler()
{
_javaCompiler = ToolProvider.getSystemJavaCompiler();
_sjfm = _javaCompiler.getStandardFileManager(null, null, null);
}
public void CompileFiles(ArrayList<String> strings, String outputFolder)
{
//_javaCompiler.run
Iterable fileObject = _sjfm.getJavaFileObjectsFromStrings(strings);
String[] options = new String[]{"-d", outputFolder};
_javaCompiler.getTask(null, null, null, Arrays.asList(options), null, fileObject).call();
try {
_sjfm.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
问题是,当我调用_sjfm = _javaCompiler.getStandardFileManager(null, null, null);
时,我遇到了NullPointerException,因为这是未运行JDK时的“预期”行为(请参阅此bug report)
这个StackOverflow post在某种程度上帮助了我,但是从Eclipse插件中编译Java文件的正确方法是什么呢?
你会推荐什么?
答案 0 :(得分:1)