class热更新

Posted justry_deng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了class热更新相关的知识,希望对你有一定的参考价值。

class热更新


功能与特性

  • 支持基于 java源码 ,走 文件 进行class热更新
  • 支持基于 java源码 ,走 内存 进行class热更新
  • 支持基于 class字节码 ,走 文件 进行class热更新
  • 支持基于 class字节码 ,走 内存 进行class热更新

maven坐标

<dependency>
    <groupId>com.idea-aedi</groupId>
    <artifactId>hot-update-class</artifactId>
    <version>{版本号}</version>
</dependency>

使用说明

记得先引入上述依赖噢,朋友们。

  • Java源码(走文件)热更新

    /**
     * 基于java源码文件的class热更新
     *
     * @param pid
     *            要热更新的jvm的进程id
     * @param agentJarPath
     *            代理jar包的绝对路径
     * @param javaPathsList
     *            要进行更新的java类文件的绝对路径集合
     */
    ClassHotUpdateExecutor.BASE64_JAVA_PATHS.execute(List<String> javaPathsList);
    ///ClassHotUpdateExecutor.BASE64_JAVA_PATHS.execute(String agentJarPath, List<String> javaPathsList);
    ///ClassHotUpdateExecutor.BASE64_JAVA_PATHS.execute(String pid, String agentJarPath, List<String> javaPathsList);
    
  • Java源码(走内存)热更新

    /**
     * 基于java源码,走内存进行class热更新
     *
     * @param agentJarPath
     *            代理jar包的绝对路径
     * @param javaBytesList
     *            要进行更新的java源码文件的绝对路径集合
     */
    ClassHotUpdateExecutor.MEMORY_JAVA_BYTES.execute(List<byte[]> javaBytesList);
    ///ClassHotUpdateExecutor.MEMORY_JAVA_BYTES.execute(String agentJarPath, List<byte[]> javaBytesList);
    
  • Class字节码(走文件)热更新

    /**
     * 基于class字节码文件的class热更新
     *
     * @param pid
     *            要热更新的jvm的进程id
     * @param agentJarPath
     *            代理jar包的绝对路径
     * @param classPathsList
     *            要进行更新的class字节码文件的绝对路径集合
     */
    ClassHotUpdateExecutor.BASE64_CLASS_PATHS.execute(List<String> classPathsList);
    ///ClassHotUpdateExecutor.BASE64_CLASS_PATHS.execute(String agentJarPath, List<String> classPathsList);
    ///ClassHotUpdateExecutor.BASE64_CLASS_PATHS.execute(String pid, String agentJarPath, List<String> classPathsList);
    
  • Class字节码(走内存)热更新

    /**
     * 基于java源码文件的class热更新
     *
     * @param pid
     *            要热更新的jvm的进程id
     * @param agentJarPath
     *            代理jar包的绝对路径
     * @param javaPathsList
     *            要进行更新的java类文件的绝对路径集合
     */
    ClassHotUpdateExecutor.MEMORY_CLASS_BYTES.execute(List<String> javaPathsList);
    ///ClassHotUpdateExecutor.MEMORY_CLASS_BYTES.execute(String agentJarPath, List<String> javaPathsList);
    ///ClassHotUpdateExecutor.MEMORY_CLASS_BYTES.execute(String pid, String agentJarPath, List<String> javaPathsList);
    

相关资料

以上是关于class热更新的主要内容,如果未能解决你的问题,请参考以下文章

JAVA实现代码热更新

idea热部署(更新jsp代码不用重编译Tomcat)

Android主要热更新技术原理

使用Arthas热更新时,lombok注解导致mc命令编译失败

IntelliJ IDEA热加载自动更新(Update classes and resources )

深入探索 Java 热部署