当前位置: 首页 > news >正文

巩义建设网站百度seo关键词优化工具

巩义建设网站,百度seo关键词优化工具,网站技术防护建设,app开发公司倒闭了怎么办前言 Javassist 是一个用于处理 Java 字节码的类库,可以用以修改 class 文件或 jar 包里的 class 文件。 简单来说我们用Java编写的代码是放在 java 格式的代码文件里,在编译的时候会编译为 class 格式的字节码文件,然后一般所有 class 文件…

前言

Javassist 是一个用于处理 Java 字节码的类库,可以用以修改 class 文件或 jar 包里的 class 文件。
简单来说我们用Java编写的代码是放在 java 格式的代码文件里,在编译的时候会编译为 class 格式的字节码文件,然后一般所有 class 文件会打成一个 jar 包对外提供服务,
如果我们没有源码但是想修改 class 文件或 jar 包里的文件是很不方便的,而 Javassist 类库就可以很方便的修改 class 和 jar 包。

Javassist 官网
Javassist Github地址

一、Maven依赖

        <dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.28.0-GA</version></dependency>

二、假设jar包中的 Student.class 类如下

假设 tempTest-1.0-SNAPSHOT.jar 包里有 Student.class 如下:

package com.haitang.test.service;public class Student {public Student() {}public String name() {return "张三";}public boolean isStudent(int id, String name) {return id > 0 && id < 10 && name != null;}public void printName(int id, String name, int age) {System.out.println("学生姓名是:" + name);}
}

三、修改class文件

修改上面的 Student.class 里的 isStudent 方法 使其方法里返回 true

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;import java.io.IOException;public class MainServer {public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException {//获取 jar 包里的要修改的 class 文件,这里获取 com.haitang.test.service 下的 Student.classClassPool pool = ClassPool.getDefault();pool.insertClassPath("C:\\myCode\\mavenTest\\lib\\tempTest-1.0-SNAPSHOT.jar");CtClass cc = pool.get("com.haitang.test.service.Student");//获取该类里的所有方法CtMethod[] methodA = cc.getDeclaredMethods();//遍历所有方法for (CtMethod ctMethod : methodA) {//获取方法的参数信息CtClass[] ps = ctMethod.getParameterTypes();//如果该方法有两个参数,第一个是int 类型,第二个是String类型,并且方法名是 isStudent ,那么就将方法体修改为 return true;if (ps.length == 2 && "int".equals(ps[0].getName()) && "java.lang.String".equals(ps[1].getName()) && "isStudent".equals(ctMethod.getName())) {ctMethod.setBody("{return true;}");}}//将修改后的 clsss 文件保存到下面的路径cc.writeFile("C:\\myCode\\mavenTest\\lib\\");}
}

将修改后的 clsss 文件进行复制,使用 Bandzip 这样的解压缩软件对 tempTest-1.0-SNAPSHOT.jar 进行压缩文件预览,找到 Student.class 所在的位置,把修改后的 Student.class 粘贴覆盖原来的 Student.class

这样 tempTest-1.0-SNAPSHOT.jar 包里 Student 类的 isStudent 方法就被修改为用于返回 true 了。


其他操作可参考:
Java字节码操作神器:Javassist入门指南
javassist使用指南

Javassist官方文档翻译

http://www.yayakq.cn/news/304796/

相关文章:

  • 2017年做网站维护总结17网站一起做网店图片工具
  • 东莞网站制作哪家最便宜提供户型图免费设计
  • 建设部监理师网站毕业设计模板
  • mvc 5 做网站的教程网站的模版要怎么重新做
  • 做的好微信商城网站吗广州网站推广费用
  • 网上做宣传的网站和县网站定制
  • 上海网站建设技术托管品牌管理的三大要素
  • wap 网站的盗链问题滑坡毕业设计代做网站
  • 中国万网首页大连谷歌seo
  • 技术支持 湘潭网站建设做炭化料的网站
  • 做电商网站的公司简介网站建设零基础教学
  • 网站备案背景幕布是什么自己做网站需要什么软件下载
  • seo网站有优化培训班吗wordpress 数据库函数
  • 常州行业网站制作wordpress more-link
  • 什么网站上面能接点小活做企业网站建设包含哪些内容
  • 公司网站建设会议纪要定制柜子品牌排行榜前十名
  • 小学网站模板源码四川seo
  • 电商网站订货wordpress在线支付表单
  • 建设门户网站的基本意义有哪些专业团队文案
  • 四川百度推广和seo优化seo标题优化裤子关键词
  • 长沙哪里可以做网站西安 网站开发 招聘
  • 做网站收费吗aspcms网站图片不显示
  • 上海企业网站黄页个人网站 免备案
  • 高端网站建设 工业常州交通建设管理有限公司网站
  • 建设银行新加坡分行网站南宁网站定制开发
  • 女頻做的最好的网站企业网站管理系统(多语言)
  • 做网站的调查问卷什么是网络营销渠道?网络营销渠道有何功能?
  • 漳州市城乡建设局网站网页美工设计之中使用的主要软件是
  • 浙江省城乡住房建设网站南昌网站建设公司价位
  • 网站添加标签云wordpress是h5页面跳转