当前位置: 首页 > 面试题库 >

java.lang.VerifyError:类net.sf.cglib.core.DebuggingClassWriter

鲁杜吟
2023-03-14
问题内容

我正在尝试对源自教程的一些非常简单的Hibernate代码进行原型设计,并且在cglib2中遇到了我不了解的错误(完整的堆栈跟踪位于本文的结尾)。我可能正在尝试根据我的简单
main() 和bean XML(如下)创建“ productBoProxy” 。

我尝试了许多不同版本的cglib都无济于事。我非常感谢能帮助我找到解决此问题的正确方法的任何人。

App.java

ApplicationContext appContext
    = new ClassPathXmlApplicationContext( "resources/config/BeanLocations.xml" );
...
productBo = ( ProductBo ) appContext.getBean( "productBoProxy" );
productBo.save( product, 100 );

Product.xml

...
<!-- This is a proxy factory bean; see App.java -->
<bean id="productBoProxy"
      class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="target" ref="productBo" />
  <property name="interceptorNames">
    <list>
      <value>transactionInterceptor</value>
    </list>
  </property>
</bean>
...

堆栈跟踪:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: \
    Error creating bean with name 'productBoProxy': \
    FactoryBean threw exception on object creation; nested exception is java.lang.VerifyError: \
    class net.sf.cglib.core.DebuggingClassWriter overrides final method visit. \
    (IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1441)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
at com.mkyong.App.main(App.java:41)
Caused by: java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter \
overrides final method visit.(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at net.sf.cglib.core.AbstractClassGenerator.<init>(AbstractClassGenerator.java:38)
at net.sf.cglib.core.KeyFactory$Generator.<init>(KeyFactory.java:127)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:112)
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:362)
at org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:316)
at org.springframework.aop.framework.ProxyFactoryBean.getObject(ProxyFactoryBean.java:242)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 6 more

问题答案:

您的cglib和ASM版本不匹配。Stacktrace告诉“
net.sf.cglib.core.DebuggingClassWriter覆盖最终方法访问”,换句话说,net.sf.cglib.core.DebuggingClassWriter扩展了org.objectweb.asm.ClassWriter尝试覆盖最终方法访问,这当然会失败。

例如,cglib
2.2.2的MavenDependendy
提取了asm
3.3.1,因此这是值得尝试的一种组合。



 类似资料:
  • 问题内容: 在我的Android应用中,我总是会收到VerifyErrors!我不知道为什么。每当我包含一个外部JAR时,当我尝试启动我的应用程序时总是会收到VerifyErrors(除了一次,当我包含Apache Log4j时)。 通常,我会通过获取库的源代码并将其添加到我的项目中来解决此问题,但是我正在尝试放置GData客户端库。 我可以在源代码中获得它,但是它不能依赖(mail.jar,ac

  • 问题内容: 我正在使用Hadoop的Java项目中工作,并且有一个java.lang.VerifyError,我不知道如何解决它。我看到有人遇到相同类型的问题,但没有答案,或者解决方案在我的情况下不起作用。 我的课 : 和错误: 你有什么主意吗 ?如果您需要更多帮助我的问题,请问。 问题答案: 我解决了我的问题。 导入的jar很好,但是我之前尝试过的另一个版本(可能是较旧的版本)也位于项目文件夹中

  • 问题内容: 我们正在开发一个桌面应用程序。使用以下配置标志在代码上运行ProGuard(版本5.3.3)时: Proguard出现以下错误: 如果将标志-dontpreverify添加到配置,则构建将成功。但是,在运行jar文件时,我们将收到以下错误: 通过使用JVM标志-noverify可以避免这种情况。 如果可能,我们希望避免使用这些“不验证”标志。 注意:即使添加时也会发生构建错误 问题答案

  • 问题内容: 该环境在Linux上为WAS 6.1,部署了一个使用xercesImpl.jar中的类的webapp。 由于公司政策的限制,该应用必须使用以下设置进行部署: WAR文件包含xercesImpl.jar的副本,该副本与编译应用程序时在类路径中的副本相同。 当启动webapp时,当Spring尝试解析其配置时,它会抛出: 分析如此之遥 似乎WAS提供了org.apache.xerces.j

  • 问题内容: 我们一直在使用GenericEnumUserType进行可扩展的枚举,并且我们的类无法在Hibernate 3.6+容器上的JBoss 6中加载。 引发以下错误 在以下代码上 问题答案: 不幸的是,如果您需要基于Enum的序数或名称之外的其他内容进行序列化,则@Enumerated无效。我设法找到了一种解决方案(从此处进行了稍微修改)。

  • 问题内容: 我正在调查以下内容 当启动部署了servlet的jboss服务器时,就会发生这种情况。它是用jdk-1.5.0_11编译的,我尝试用jdk-1.5.0_15重新编译,但没有成功。编译运行正常,但是在部署时会发生。 当我更改方法名称并收到以下错误时: 你可以看到显示了更多的方法签名。 实际的方法签名是 我已经尝试过使用它进行查看,并且给出了应有的方法签名。 当我的其他同事签出代码,对其进