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