zoukankan      html  css  js  c++  java
  • Java中Asm包有什么用?

    ASM能做什么

            我们都知道,一般情况下,Class文件是通过javac编译器产生的,然后通过类加载器加载到虚拟机内,再通过执行引擎去执行。

      现在我们可以通过ASM的API直接生成符合Java虚拟机规范的Class字节流,这样,ASM做的事情一定程度上正是javac解释器做的工作。

         可以说ASM分析一个类、从字节码角度创建一个类、修改一个已经被编译过的类文件

         那么,我们就可以通过ASM来实现诸如代码生成,代码混淆,代码转换等等以字节码为操作目标的工作

      Asm主要是操作PO字节dng码的,当Spring , Hibernate整合时,有两个asm.jar包,这时就要删除spring下的asm.jar包(避免Spring和hibernate两者包的冲突)。

      可能你会问两者为啥会冲突:

      在使用Spring的AOP编程时,会用到这几个lib:
        asm-2.2.2.jar
        asm-commons-2.2.2.jar
        asm-util-2.2.2.jar Hibernate使用如下lib: asm.jar
        asm-attrs.jar


        其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
        使用其中之一或两者都使用,可能会出现如下错误:
        java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
        java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
        java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit

    人真是一种有趣的生物。
  • 相关阅读:
    linux用户管理初级(上)
    定时任务实战
    linux定时任务
    Linux 命令行基础(一)
    Linux 操作系统发展历程及系统版本选择
    Linux文件的权限
    Linux硬连接和软连接
    Linux 文件的属性
    linux 正则表达式
    centos7 设置时间同步
  • 原文地址:https://www.cnblogs.com/yswyzh/p/9010375.html
Copyright © 2011-2022 走看看