1、pom引入包。
<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.27.0-GA</version> </dependency>
2、写个main程序修改。
import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; public class JavassistTest { public static void main(String[] args) throws Exception { ClassPool classPool = ClassPool.getDefault(); // 新方法里用到的外部类需引入 classPool.importPackage("com.google.gson.JsonArray"); // 获得要修改的class文件 CtClass ctClass = classPool.get("包名+类名"); // 向class文件里增加方法 CtMethod method = CtMethod.make("整个方法内容", ctClass); ctClass.addMethod(method); // 将新的class文件写到指定的目录,即可得到修改后的class文件 ctClass.writeFile("D:\\JavassistTest"); } }
3、坑。
有些类importPackage无效,比如java.util.Map.Entry,需要在用到的地方写死,即Entry改为java.util.Map.Entry;json.addProperty("status", -1)会报错,说-1不是Number类,需要改为Integer.valueOf(-1)。