public class JavaSourceCompiler extends Object
通过此类可以动态编译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");
Modifier and Type | Method and Description |
---|---|
JavaSourceCompiler |
addLibrary(File... files)
加入编译Java源码时所需要的jar包,jar包中必须为字节码
|
JavaSourceCompiler |
addSource(File... files)
向编译器中加入待编译的文件
支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包 |
JavaSourceCompiler |
addSource(Map<String,String> sourceCodeMap)
向编译器中加入待编译的源码Map
|
JavaSourceCompiler |
addSource(Resource... resources)
向编译器中加入待编译的资源
支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包 |
JavaSourceCompiler |
addSource(String className,
String sourceCode)
向编译器中加入待编译的源码
|
ClassLoader |
compile()
编译所有文件并返回类加载器
|
ClassLoader |
compile(List<String> options)
编译所有文件并返回类加载器
|
static JavaSourceCompiler |
create(ClassLoader parent)
创建Java源码编译器
|
public static JavaSourceCompiler create(ClassLoader parent)
parent
- 父类加载器public JavaSourceCompiler addSource(Resource... resources)
resources
- 待编译的资源,支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包public JavaSourceCompiler addSource(File... files)
files
- 待编译的文件 支持 .java, 文件夹, 压缩文件 递归搜索文件夹内的压缩文件和jar包public JavaSourceCompiler addSource(Map<String,String> sourceCodeMap)
sourceCodeMap
- 源码Map key: 类名 value 源码public JavaSourceCompiler addSource(String className, String sourceCode)
className
- 类名sourceCode
- 源码public JavaSourceCompiler addLibrary(File... files)
files
- 编译Java源码时所需要的jar包public ClassLoader compile()
public ClassLoader compile(List<String> options)
options
- 编译参数Copyright © 2024. All rights reserved.