日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java class is frozen_利用javassit简单操作class文件 1

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java class is frozen_利用javassit简单操作class文件 1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

maven 構建工具 pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

facfjavaagent

facfjavaagent

1.0

jar

1.6

2.5.1

javassist

javassist

3.1

org.apache.maven.plugins

maven-jar-plugin

agent.AgentApplication

agent.AgentApplication

true

true

org.apache.maven.plugins

maven-compiler-plugin

${compiler.plugin.version}

${jdk.version}

${jdk.version}

UTF-8

Testdemo.java

import javassist.CannotCompileException;

import javassist.ClassPool;

import javassist.CtClass;

import javassist.CtField;

import javassist.CtMethod;

import javassist.NotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

/**

* description:

*

* @author: he QQ: 905845006

* @email: 905845006@qq.com

* @date: 2020/7/15 4:11 PM

*/

public class Testdemo {

private String text = "hello world";

public static void main(String[] args) {

// test1();

test2();

}

/**

* 1. 創建簡單的類

*/

public static void test1() {

//默認的類搜索路徑

ClassPool classPool = ClassPool.getDefault();

//創建一個ctClass對象

CtClass ctClass = classPool.makeClass("com.lwj.mom.base.javassist.Student");

try {

//添加age屬性

ctClass.addField(CtField.make("private int age;", ctClass));

//添加setAge方法

ctClass.addMethod(CtMethod.make("public void setAge(int age){this.age = age;}", ctClass));

//添加getAge方法

ctClass.addMethod(CtMethod.make("public int getAge(){return this.age;}", ctClass));

//將ctClass轉換成字節碼并寫入文件

byte[] byteArray = ctClass.toBytecode();

FileOutputStream output = new FileOutputStream("/Users/heliming/IdeaProjectss/facf/facfjavaagent/src/main/java/Student.class");

output.write(byteArray);

output.close();

System.out.println("文件寫入成功!!!");

} catch (CannotCompileException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 2. 修改jvm加載過的class

*/

public static void test2() {

//默認的類搜索路徑

ClassPool classPool = ClassPool.getDefault();

//創建一個ctClass對象

CtClass ctClass = classPool.makeClass("com.lwj.mom.base.javassist.Student");

//重點

ctClass.stopPruning(true);

try {

//添加age屬性

ctClass.addField(CtField.make("private int age;", ctClass));

//添加setAge方法

ctClass.addMethod(CtMethod.make("public void setAge(int age){this.age = age;}", ctClass));

//添加getAge方法

ctClass.addMethod(CtMethod.make("public int getAge(){return this.age;}", ctClass));

//將ctClass轉換成字節碼并寫入文件

byte[] byteArray = ctClass.toBytecode();//toBytecode會設置wasPruned為true

FileOutputStream output = new FileOutputStream("/Users/heliming/IdeaProjectss/facf/facfjavaagent/src/main/java/Student.class");

output.write(byteArray);

output.close();

System.out.println("文件寫入成功!!!");

//重點

if(ctClass.isFrozen()){

ctClass.defrost();

}

//這里用pool.get()去獲取ctClass對象,表示默認JVM已經加載此類.

ctClass = classPool.get("com.lwj.mom.base.javassist.Student");

ctClass.addField(CtField.make("private String sex;", ctClass));

ctClass.addField(CtField.make("private String name;", ctClass));

byteArray = ctClass.toBytecode();

output = new FileOutputStream("/Users/heliming/IdeaProjectss/facf/facfjavaagent/src/main/java/Student.class");

output.write(byteArray);

output.close();

System.out.println("文件修改成功!!!!");

} catch (CannotCompileException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (NotFoundException e) {

e.printStackTrace();

}

}

}

問題:

jvm加載的類默認被凍結如果不解凍就修改報錯。

jvm默認對加載的class進行了剪切已提高性能,如果不設置為不剪切加載的class,就算解凍也會失敗,因為class類已經剪切了沒法從新改這個class類了。

可以看出我修改的class可以隨意定義包名,然后把這個class放入對應的包下就能找到。

總結

以上是生活随笔為你收集整理的java class is frozen_利用javassit简单操作class文件 1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 污视频软件在线观看 | 久热这里只有 | 黄色精品在线 | 九九精品免费视频 | 狠狠干网 | 美女免费视频网站 | 亚洲精品成人区在线观看 | 国产黄色高清 | 久久色网 | 成人开心激情 | 伊人久久97 | 国产免费无码XXXXX视频 | 欧美激情一级精品国产 | 日韩毛片在线播放 | 超碰精品在线观看 | 国产片淫乱18一级毛片动态图 | 亚洲视频a| 高潮无码精品色欲av午夜福利 | 微拍福利一区二区 | 欧美少妇毛茸茸 | 久久艹综合 | 国产资源av| 亚洲欧洲国产视频 | 97人人超 | 91国语对白 | 澳门久久久 | 美女少妇直播 | 九草视频在线 | 国产美女又黄又爽又色视频免费 | 婷婷天堂网 | 桃谷绘里香在线播放 | 免费精品视频在线 | 中文在线字幕观看 | 欧美一区三区二区在线观看 | 99久免费精品视频在线观78 | 伊伊成人| 女大学生的家政保姆初体验 | 国产一区二区啪啪啪 | 欧美性猛交乱大交 | 一级不卡毛片 | 久久精品视频16 | 久久久久久无码午夜精品直播 | 日韩精品高清视频 | 日韩精品一区二区三区色欲av | 亚洲影院在线 | 樱花草av| 99久久精品无免国产免费 | 亚洲最新色图 | 日韩精品xxx | 阿v天堂2018 俄罗斯丰满熟妇hd av色吧 | 国产成人精品视频在线观看 | 亚洲av无码国产精品久久久久 | 女女爱爱视频 | 污视频在线免费观看 | 一区二区三区毛片 | 麻豆成人入口 | 福利在线网站 | 欧美日韩国产一区二区 | aaa国产视频 | 亚洲精选在线观看 | 中国女人黄色大片 | 毛片在线视频播放 | 少妇久久久久久久 | 一二三区av| 疯狂少妇 | 欧美自拍视频 | 韩国一区二区三区在线观看 | 欧美大片在线免费观看 | 日韩高清欧美 | 男人的天堂va | 理论片久久 | 国产黄色大片网站 | 日日夜夜超碰 | 青青精品 | 久久性感视频 | 91精品国产免费 | 亚洲av高清一区二区三区 | 污视频大全 | 亚洲欧洲精品一区二区 | 日av一区| av不卡一区二区三区 | 黄网站免费大全入口 | 欧美日韩在线免费看 | 亚洲成人av中文字幕 | 免费在线成人网 | 国产一二三区av | 日韩一区欧美 | 一区二区高清视频 | 奴性女会所调教 | 欧美日韩激情 | 免费视频精品 | av色网站| 日本在线三级 | 操欧美女 | 久久久久亚洲av无码专区体验 | www.白丝 | 在线观看视频免费 | 国产精品高潮AV无码 | 女人裸体无遮挡 |