不管是工作中,还是自己平时学习时候,或多或少都会碰到一些问题。没有源码的Jar文件或者是混淆过得Jar文件,里面提供的某个方法不适合自己,甚至某个方法是用来进行判断license的。
下面说的这个javassist.jar文件,就具备修改jar文件里面某个class的功能。上代码!
public static void main(String[] args) throws Exception {
try {
ClassPool pool = ClassPool.getDefault();
//指定class所在的路径
pool.insertClassPath("E:\\test");
//指定要修改class的完整类名
CtClass cc = pool.get("com.test.runtime");
//设置要修改的方法需要的参数,没有参数可以不设置
CtClass[] param = new CtClass[1];
param[0] = pool.get("int");
//指定要修改的类方法
CtMethod m = cc.getDeclaredMethod("check", param);
//插入新的代码到最前面
//m.insertBefore("{if(true) return ;}");
//重新设置方法体
m.setBody("{return ;}");
//保存到文件里,文件会保持到该工程下
cc.writeFile();
} catch (Exception e) {
e.printStackTrace();
}
}
方法很简单,但是对需要的人来说,很重要。
Jar包下载地址:https://git.oschina.net/eliyanfei/api_tools.git