Package org.aoju.bus.core.compiler
Class JavaSourceCompiler
java.lang.Object
org.aoju.bus.core.compiler.JavaSourceCompiler
Java 源码编译器
通过此类可以动态编译java源码,并加载到ClassLoader,从而动态获取加载的类
JavaSourceCompiler支持加载的源码类型包括:
- 源码文件
- 源码文件源码字符串
ClassLoader classLoader = JavaSourceCompiler.create(null)
.addSource(FileUtil.file("test-compile/b/B.java"))
.addSource("c.C", FileUtil.readUtf8String("test-compile/c/C.java"))
// 增加编译依赖的类库
.addLibrary(libFile)
.compile();
Class<?> clazz = classLoader.loadClass("c.C");
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Method Summary
Modifier and TypeMethodDescriptionaddLibrary(File... files) 加入编译Java源码时所需要的jar包,jar包中必须为字节码向编译器中加入待编译的文件 支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包向编译器中加入待编译的源码向编译器中加入待编译的源码Map向编译器中加入待编译的资源 支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包compile()编译所有文件并返回类加载器static JavaSourceCompilercreate(ClassLoader parent) 创建Java源码编译器
-
Method Details
-
create
创建Java源码编译器- Parameters:
parent- 父类加载器- Returns:
- Java源码编译器
-
addSource
向编译器中加入待编译的资源 支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包- Parameters:
resources- 待编译的资源,支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包- Returns:
- Java源码编译器
-
addSource
向编译器中加入待编译的文件 支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包- Parameters:
files- 待编译的文件 支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包- Returns:
- Java源码编译器
-
addSource
向编译器中加入待编译的源码Map- Parameters:
sourceCodeMap- 源码Map key: 类名 value 源码- Returns:
- Java源码编译器
-
addSource
向编译器中加入待编译的源码- Parameters:
className- 类名sourceCode- 源码- Returns:
- Java文件编译器
-
addLibrary
加入编译Java源码时所需要的jar包,jar包中必须为字节码- Parameters:
files- 编译Java源码时所需要的jar包- Returns:
- Java源码编译器
-
compile
编译所有文件并返回类加载器- Returns:
- 类加载器
-