当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

Javassist

Java 字节码编辑类库
授权协议 Apache
开发语言 Java
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 不详
投 递 者 万承志
操作系统 跨平台
开源组织 JBoss
适用人群 未知
 软件概览

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。

Javassist(JAVA 编程ASSISTant)使Java字节码操作变得简单。 它是一个用Java编辑字节码的类库; 它使Java程序能够在运行时定义新类,并在JVM加载时修改类文件。 与其他类似的字节码编辑器不同,Javassist提供两个级别的API:源级别和字节码级别。 如果用户使用源级API,他们可以在不知道Java字节码规范的情况下编辑类文件。 整个API仅使用Java语言的词汇表进行设计。 您甚至可以以源文本的形式指定插入的字节码; Javassist即时编译它。 另一方面,字节码级API允许用户直接编辑类文件作为其他编辑器。

“Javassist”的图片搜索结果

示例代码:

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("test.Rectangle");
cc.setSuperclass(pool.get("test.Point"));
cc.writeFile();

 

  • 说明:翻译的太好,怕原文丢失就转载了。 1. 读写字节码 我们知道 Java 字节码以二进制的形式存储在 class 文件中,每一个 class 文件包含一个 Java 类或接口。Javaassist 就是一个用来处理 Java 字节码的类库。 在 Javassist 中,类 Javaassit.CtClass 表示 class 文件。一个 GtClass (编译时类)对象可以处理一个 class

  • 要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略: 1.      动态编译 2.      动态生成二进制字节码(.class) 对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib、ASM、Javassist等。这些开源项目通常都具备两方面的功能: 1.      动态创建新类或新接口的二进制字节码 2.      动态扩展现有类或接口的二进制字节码 其中,CG

  • javassist的基本功能 Javassist是一个动态类库,可以用来检查、”动态”修改以及创建 Java类。其功能与jdk自带的反射功能类似,但比反射功能更强大。 重要的类 ClassPool:javassist的类池,使用ClassPool 类可以跟踪和控制所操作的类,它的工作方式与 JVM 类装载器非常相似, CtClass: CtClass提供了检查类数据(如字段和方法)以及在类中添加新

  • 一、前言 Javassist 是一个开源,用于分析、编辑和创建Java字节码的类库,由东京工业大学数学和计算机科学系的 Shigeru Chiba (千叶滋)所创建。目前已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。 通过使用Javassist可以使Java程序在运行时定义一个新的类,并且在JVM加载类文件时修改它 Java

  • 转载 https://www.cnblogs.com/rickiyang/p/11336268.html javassist使用全解析 Java 字节码以二进制的形式存储在 .class 文件中,每一个 .class 文件包含一个 Java 类或接口。Javaassist 就是一个用来 处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字节码

  • 1/获取方法参数名 来源:点击打开链接 javassist和 asm都是动态创建、修改字节码的类库。个人感觉主要区别是: asm的性能要好一些。 javassist的主要优势是学习成本低,可以根据java源代码生成字节码,而不必直接和字节码打交道。(本例不涉及生成字节码的部分) 发现javassist貌似不支持泛型。 package org.cc.tx.aop.javassit; import j

  • Javassist是一个执行字节码操作的强而有力的驱动代码库。它允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。但是, 和其他的类似库不同的是,Javassist并不要求开发者对字节码方面具有多么深入的了解,同样的,它也允许开发者忽略被修改的类本身的细节和结构。 字 节码驱动通常被用来执行对于已经编译好的类的修改,或者由程序自动创建执行类等等等等相关方面的操作。这就要求字

  • 在回顾struts2的知识的时候,发现导入经典的几个jar文件后,会报一个错误就是 java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 。。。。。。 Caused by: java.lang.ClassNotFoundException: javassist.ClassPool 。。。。。。 在struts

  • 概述   Javassist是一款字节码编辑工具,可以直接编辑和生成Java生成的字节码,以达到对.class文件进行动态修改的效果。熟练使用这套工具,可以让Java编程更接近与动态语言编程。   下面一个方法的目的是获取一个类加载器(ClassLoader),以加载指定的.jar或.class文件,在之后的代码中会使用到。 private static ClassLoader getLocale

  • 一、Javassist 使用javassist的其中一个作用就是首先在用Mybatis框架搭建MVC三层架构时,由于Dao层的Impl类没有什么“必要”的作用,因此可以“不创建”这个类。 在pom.xml文件中加入javassist依赖 <dependency> <groupId>org.example</groupId> <artifactId

  • javassist的基本功能 Javassist是一个动态类库,可以用来检查、”动态”修改以及创建 Java类。其功能与jdk自带的反射功能类似,但比反射功能更强大。 重要的类 ClassPool:javassist的类池,使用ClassPool 类可以跟踪和控制所操作的类,它的工作方式与 JVM 类装载器非常相似,  CtClass: CtClass提供了检查类数据(如字段和方法)以及在类中添加

  • 概述 Javassist是一款字节码编辑工具,可以直接编辑和生成Java生成的字节码,以达到对.class文件进行动态修改的效果。熟练使用这套工具,可以让Java编程更接近与动态语言编程。今天我们使用Javassist获取形参名以及实参值对应表。 准备 pom引入依赖包 <dependency> <groupId>javassist</groupId> <artifactId>javassis

  • 什么是Javassist Javassist是一个执行字节码操作的类库。它允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。但是,和其他的类似库不同的是,Javassist并不要求开发者对字节码方面具有多么深入的了解,同样的,它也允许开发者忽略被修改的类本身的细节和结构。 官方网站:http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javas

  • Java bytecode engineering toolkit since 1999 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由日本的 Shigeru Chiba 所创建的,它已加入了开放源代码 JBoss 应用服务器项目,通过使用 Javassist 对字节码操作为 JBoss 实现动态"AOP"框架。 关于java字节码的处理,目前有很多工具,如bcel,AS

 相关资料
  • 问题内容: 什么是好的免费字节码编辑器?我想要一个带有GUI的编辑器… 我没有运气尝试了jbe-0.1b(无法保存字节码更改)。 问题答案: UI并不完美,但是您可以使用Eclipse Bytecode Outline插件将任何Java类转换为ASM代码,对其进行编辑,并生成更改后的类。这可能是目前最轻松的方式。 http://asm.ow2.org/eclipse/index.html

  • 问题内容: 是否有用于 编辑Java类文件 的实用程序(或eclipse插件)?我想操作Java类文件的字节码,而无需重新编译它或没有完整的buildpath。 例如重命名方法,添加/删除指令,更改常量等。 我发现的唯一实用程序是: classeditor, 但功能非常有限( 例如,无法重命名和操作指令 )。 jbe不会保存更改(可能是因为类验证失败-在进行任何更改之前,尽管类运行良好) (jbe

  • 我正在使用python3,我在对象的表示方面遇到了问题。 它是,这是一个字节数组,但是当我把它传递给另一个函数时,python把它解释为一个字符串,这不是 。 b'N\x00e\x00l\x00\x00s\x00o\x00t\x00t\x00o\x00s\x000i\x00d\x00e_x00e\\x00m\x00a\x00\\x00W\x00i\x000n\x00d_x00W\x000s\x00

  • 问题内容: 我遇到了一些有关JVM / JIT活动的参考,其中似乎在编译字节码和解释字节码之间有区别。该特定注释声明的字节码在前10000次运行时进行解释,然后进行编译。 “编译”和“解释”字节码之间有什么区别? 问题答案: 解释字节码基本上是逐行读取字节码,不进行任何优化或任何操作,然后对其进行解析并实时执行。由于许多原因,这种方法效率低下,其中包括Java字节码设计得不能快速解释的问题。 编译

  • 导航 目录 上一章:Lua 与 C/C++ 交互 下一章:LuaJIT 介绍

  • 问题内容: 我正在寻找用Java字节码编写一个简短的程序(也许是Hello World)。我只想使用我的文本编辑器编写字节码并运行它。我该怎么做?有一个例子吗?谢谢! 问题答案: 您可以尝试茉莉! 您可以使用以下命令进行编译: 然后像任何类一样运行它: 更新资料 我看到您的问题提到“不使用Javac或Java”。您能说明一下该声明的意思吗?

  • 了解代码编辑器 源代码编辑器是一个文本编辑程序, 专门为编辑计算机程序源代码的程序员而设计的, 它可能是一个独立的应用程序或内置在集成开发环境(IDE)或web浏览器中. 源代码编辑器是最基本的编程工具, ,作为程序员的基本工作就是编写和编辑源代码. - Wikipedia 前端代码可以被一个简单的文本编辑应用程序(如: Notepad 或 TextEdit), 但是, 大多数前端人员使用专门为一