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

thinkcmf做网站快不快网站开发工程师的经验

thinkcmf做网站快不快,网站开发工程师的经验,网站网站制作公司哪家好,织梦手机网站建设前言 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.15wanjia.com/news/195652.html

相关文章:

  • 源码下载网站青岛市崂山区建设局网站
  • python 网站开发 普及中国建设信息港网站
  • 企业网站优化服务商给金融公司群做网站合法吗
  • 南昌市有帮做网站的吗学院网站建设服务宗旨
  • 公司建站网站银川市网页设计培训
  • 网站开发技术学习wordpress去除wordpress新闻
  • 福田网站建设新闻网上可以推广的地方
  • 免费cms网站管理系统网站远程图片
  • 湖北省住房和建设厅网站首页浙江建设信息港网站查询
  • 做哪一类网站容易有排名大淘客网站建设
  • 企业标准型手机网站网站的二级页面在哪里做
  • 网站建设的四大要素帝国网站模板建设视频
  • 给网站开发APP福建大佳建设工程有限公司网站
  • fms 视频网站建设建建建设网站首页
  • 360阻止建设银行网站广州展厅设计企业展厅设计公司
  • 云南省建设培训网站免费做游戏小程序的网站
  • 网站 公众号信息化建设工作网站为什么被降权
  • 建站市场分析正能量免费下载
  • 网站建设开发维护怎么自己做网站免费的
  • 太仓做网站甜品网站策划与建设
  • 怎么网站改版app一键生成平台免费软件
  • 如何申请建设网站wordpress页眉在哪改
  • jsp网站开发技术的开发中国建设银行网站首页joy
  • 个人网站建设的目的wordpress 报错
  • 浦口区网站建设售后保障全国最大的网站建设公司
  • 网站如何做整合营销新能源电动汽车哪个牌子的质量好
  • 为客户做网站的方案朔州网站建设价格
  • 国内网站设计欣赏游戏开发物语破解版
  • 湖州网站建设湖州网站建设网页设计高端
  • 专业的培训行业网站模板淘宝店铺买卖网