![](http://www.zhousa.com/zb_users/theme/quietlee/style/noimg/5.jpg)
阅读《2024 中国开源开发者报告》赢大奖,扫码申请享特权
![](https://www.oschina.net/img/hot3.png)
Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,40KB),它可以在运行时编译 Java 字符串代码片段、类、方法等。
- 源码地址:https://gitee.com/noear/liquor
基础编译特性:
- 可以单个类编译
- 可以多个类同时编译
- 可以增量编译
增值功能:
- java 表达式引擎
- java 脚本引擎(支持 java8 到 java23 语法)
本次更新
- 添加 DynamicCompiler:addClassPath 方法
- 添加 DynamicCompiler:getStandardFileManager 方法
新特性示例:
// A.java public class A { private B b = new B(); } // B.java public class B {} // Demo.java public class Demo { @Test public void test() throws Exception { final DynamicCompiler dynamicCompiler = new DynamicCompiler(); dynamicCompiler.addClassPath(new File(".../test/")); //这是重点 dynamicCompiler.addSource(new JavaFileSource(new File(".../test/A.java"))); dynamicCompiler.build(); final Class<?> clazz = dynamicCompiler.getClassLoader().loadClass("test.A"); System.out.printf("clazz: %s\n", clazz); } private static class JavaFileSource extends SimpleJavaFileObject { public JavaFileSource(File codeSourceFile) { super(codeSourceFile.toURI(), Kind.SOURCE); } @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException { return new String(Files.readAllBytes(Paths.get(this.uri)), StandardCharsets.UTF_8); } } }
还没有评论,来说两句吧...