当前位置: 首页 > 知识库问答 >
问题:

noClassDefoundError:net/sf/cglib/asm/util/traceClassVisitor

宰父学
2023-03-14

我正在用spring 3尝试简单的aop

app-context.xml:

<bean id="lambesis" class="by.aop.test.pack.Metalcore" >
    <constructor-arg value="UYUOOOOO" />
</bean>

<bean id="fans" class="by.aop.test.pack.Fans" />

<aop:config proxy-target-class="true">
    <aop:aspect ref="fans">
        <aop:pointcut id="mus" expression="execution(* by.aop.test.pack.Musician.play(..))" />

        <aop:before pointcut-ref="mus" method="takeSeats" />
    </aop:aspect>
</aop:config>

主要方法:

public static void main(String[] args) 
{
    ApplicationContext ctx = new ClassPathXmlApplicationContext("by/aop/test/pack/app-context.xml"); 

    Musician musician = ctx.getBean("lambesis", Metalcore.class);
    musician.play(); 
}

Metalcore实现音乐家接口

cglib和cglib-nodep都有此错误

    log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lambesis' defined in class path resource [by/aop/test/pack/app-context.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: net/sf/cglib/asm/util/TraceClassVisitor
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at by.aop.test.pack.StartingPoint.main(StartingPoint.java:10)
Caused by: java.lang.NoClassDefFoundError: net/sf/cglib/asm/util/TraceClassVisitor
    at net.sf.cglib.core.DebuggingClassWriter.toByteArray(DebuggingClassWriter.java:73)
    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:26)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
    at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
    at org.springframework.aop.framework.Cglib2AopProxy.createEnhancer(Cglib2AopProxy.java:228)
    at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:170)
    at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:112)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:476)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:362)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1426)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    ... 11 more
Caused by: java.lang.ClassNotFoundException: net.sf.cglib.asm.util.TraceClassVisitor
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 28 more

依赖项:

<dependencies>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.7</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.framework.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.framework.version}</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.14</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.7.3</version>
</dependency>
   <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>3.0</version>
</dependency>
<dependency>
   <groupId>asm</groupId>
   <artifactId>asm-all</artifactId>
   <version>2.1</version>
</dependency>

null

附加的asm依赖修复了第一个错误,但现在我有2包asm和下一个错误

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lambesis' defined in class path resource [by/aop/test/pack/app-context.xml]: Initialization of bean failed; nested exception is java.lang.IncompatibleClassChangeError: Implementing class

我该怎么办?

共有1个答案

太叔昊苍
2023-03-14

您可以尝试以下操作:

<properties>
    <junit.version>4.11</junit.version>
    <springframework.version>3.2.3.RELEASE</springframework.version>
    <log4j.version>1.2.17</log4j.version>
    <aspectj.version>1.7.2</aspectj.version>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${springframework.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectj.version}</version>
    </dependency>
</dependencies>

spring从3.2开始内联cglibasm,所以我删除了对cglibasm的依赖关系。

此外,我删除了对AspectJweaver的依赖,因为spring上下文依赖于AspectJweaver

 类似资料:
  • win-sf 是一款用于 Windows 快速配置、自动调优、一键安装、镜像封装制作的开源工具。通过修改配置文件,部署框架将自动执行规定的任务,省事省心!可用于你的新电脑,且适用于设备管理员批量部署。 可选配置: 卸载 Xbox, OneDrive, UWP 等内置捆绑软件 优化文件管理器、开始菜单、任务栏、输入法等组件 添加常用操作说明文档、快捷方式 优化系统杂项、BUG 修复 跳过 OOBE

  • SF Tube(前身为 FluTube) ,是一个使用 Flutter 制作的 Youtube 客户端。 特征: 漂亮的用户界面 轻巧快速 无需登录 保留你喜欢的视频和评论 支持播放列表 支持下载视频、音频和缩略图 无广告 自由和开源 从源代码构建 下载最新的 Flutter SDK (>=2.8.0) 克隆这个 repo,然后进行构建 # Download dependenciesflutter

  • CGLib (Code Generation Library) 是一个强大的、高性能、高质量的 Code 生成类库。它可以在运行期扩展 Java 类与实现 Java 接口。Hibernate 用它来实现 PO 字节码的动态生成。CGLib 比 Java 的 java.lang.reflect.Proxy 类更强的在于它不仅可以接管接口类的方法,还可以接管普通类的方法。 CGLib 的底层是Java

  • ASM

    ASM是一个通用的Java字节码操作和分析框架。 它可以用于修改现有类或直接以二进制形式动态生成类。 ASM提供了一些常见的字节码转换和分析算法,可以从中构建自定义复杂转换和代码分析工具。 ASM提供与其他Java字节码框架类似的功能,但专注于性能。 因为它的设计和实现尽可能小而且快,所以它非常适合在动态系统中使用(但当然也可以以静态方式使用,例如在编译器中)。  

  • 第一次面试,贼紧张,而且官网简历还没写对,难受 1。介绍论文(面试官想知道是不是没有落地的无用研究,给吹了几句 “大厂都在搞”) 2、介绍本科做的一些项目 2、介绍项目(烂大街秒杀) 3、rabbitmq如何保证有序性(说了个是个队列,有点文不对题) 4、mq高可用(忘记了,没答上来) 5、超卖 6、分布式锁如何实现 7、aop理解和使用 8、浏览器输入url的响应过程 9、顺势问了一个  网页访

  • 介绍 CGLib (Code Generation Library) 是一个强大的,高性能,高质量的Code生成类库,通过此库可以完成动态代理、Bean拷贝等操作。 Hutool在5.4.1之后加入对Cglib的封装——CglibUtil,用于解决Bean拷贝的性能问题。 使用 引入Cglib <dependency> <groupId>cglib</groupId> <artif