我是从网上找到一个Spring缓存相关例子 地址是:http://www.chinaitpower.com/A/2002-11-15/40954.html
按照网上写的方式做,报出以下错误我加载的JAR包
cglib-2.13.jar
cglib-nodep-2.13.jar
cglib-full-2.02.jar
ehcache-1.2.3.jar
com.springdource.org.aopallince-1.0.0.jar
spring.jar
commons-logging.jar
log4j.jar
望大鸟帮忙解决这问题,或者给一份可以运行的DEMO 谢谢
错误信息如下
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testBean': FactoryBean threw exception on object creation; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:127)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:116)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:91)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1288)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:217)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
at com.star.exp.spring.aop.TestMain.getBean(TestMain.java:48)
at com.star.exp.spring.aop.TestMain.main(TestMain.java:18)
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
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:229)
at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:171)
at org.springframework.aop.framework.ProxyFactoryBean.getProxy(ProxyFactoryBean.java:363)
at org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:317)
at org.springframework.aop.framework.ProxyFactoryBean.getObject(ProxyFactoryBean.java:243)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:121)
... 10 more

解决方案 »

  1.   

    这是我Spring配置文件信息<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <!-- 引用ehcache.xml的配置 -->
    <bean id="cacheManager"
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation">
    <value>classpath:ehcache.xml</value>
    </property>
    </bean> <!-- 定义ehCache的工厂,并设置所使用的Cache name -->
    <bean id="methodCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
    <property name="cacheManager" ref="cacheManager" />
    <property name="cacheName" value="DEMO_CACHE" />
    </bean> <!-- Spring配置文件中定义拦截器-->
    <bean id="methodCacheInterceptor" class="com.star.exp.spring.aop.MethodCacheInterceptor">
    <property name="cache" ref="methodCache" />
    </bean> <!-- 定义正则表达式切入点 -->
    <bean id="methodCachePointCut"
    class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    <property name="advice">
    <ref local="methodCacheInterceptor" />
    </property>
    <property name="patterns">
    <list>
    <value>.*say</value>
    </list>
    </property>
    </bean> <bean id="testBean" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target">
    <!-- 定义用于缓存处理的类 -->
    <bean class="com.star.exp.spring.aop.TestBean" />
    </property>
    <property name="interceptorNames">
    <list>
    <value>methodCachePointCut</value>
    </list>
    </property>
    </bean> <bean id="test2Bean" class="com.star.exp.spring.aop.TestBean"/>

    </beans>