使用JCompiler实现JAVA代码内存中动态编译

第一部分 简介

JCompiler是用Java 编写的用来将Java源代码动态编译为字节码的辅助工具,开发者可以动态生成源代码并在内存中将其进行编译并获得编译后的类对象。

第二部分 开始使用

使用JCompiler可以直接下载源代码编译或者下载已经编译的jar文件,如果您是使用maven来构建项目,也可以直接在pom.xml中添加JCompiler的坐标:

<!-- http://mvnrepository.com/artifact/com.jianggujin/JCompiler -->
<dependency>
    <groupId>com.jianggujin</groupId>
    <artifactId>JCompiler</artifactId>
    <version>最新版本</version>
</dependency>

最新的版本可以从Maven仓库或者码云获取。

如果使用快照SNAPSHOT版本需要添加仓库,且版本号为快照版本 点击查看最新快照版本号

<repository>
    <id>snapshots</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>

一个例子:

假设我们有一个接口Parent,其代码如下:

public interface Parent {
    void say();
}

定义接口是为了动态生成的类对象方便调用,也可以通过其他方式,此处仅仅是为了演示

我们可以准备一个代码片段如下:

package com.jianggujin.compiler.test;
public class Test implements com.jianggujin.compiler.test.CompileTest.Parent {
    public void say() {
        System.out.println("this is dynamic compile class.");
    }
}

此处的代码片段为字符串变量content的值,并非直接编写的源代码

然后我们仅需要简单的几行代码即可实现对上面的代码片段进行编译执行:

JMemoryJavaCompiler compiler = new JMemoryJavaCompiler();
JCompileResult result = compiler.compile(content);
System.out.println(result);
if (result.isSuccess()) {
    ((Parent) result.newInstance()).say();
}
compiler.close();

完整代码参见单元测试代码:src/test/java/com/jianggujin/compiler/test/CompileTest.java

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值