我正在尝试使用编译器API动态编译整个java项目。我实现这一点的最初想法是首先知道如何使用命令行在一行中编译它,然后在编译器对象上应用相同的原理/参数。问题是,我从来没有使用CLI编译过。(使用IDE的缺点?哈哈)
那么,我走对了吗?此外,项目编译是否可以在一行执行中实现?我很难弄清楚这一点,因为这是一个项目,它包含了大量的包。
所以您想学习javac还是Java编译器API?
如果要编译CLI,请查看javac(Linux|windows)。
或者对于API,那么Java编译器API的编程使用肯定需要不止一行,这将为您提供编译器:
JavaCompiler
compiler =
ToolProvider
。getSystemJavaCompiler()
;
然后,您仍然需要加载类,写出字节码,并可能打包为JAR。
您应该使用StandardJavaFileManager
,因为您可能有许多类要管理,JavaCompilerjavadoc的顶部有一个示例,但搜索StandardJavaFileManager+JavaCompiler+example可以找到更清晰的示例,如本博客文章。