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 © 2025. All rights reserved.