Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ClassFormatError:重复的方法名称&;来自EnhancerBySpringCGLIB的签名_Java_Spring_Cglib_Classformaterror - Fatal编程技术网

Java ClassFormatError:重复的方法名称&;来自EnhancerBySpringCGLIB的签名

Java ClassFormatError:重复的方法名称&;来自EnhancerBySpringCGLIB的签名,java,spring,cglib,classformaterror,Java,Spring,Cglib,Classformaterror,我真的被难住了。我已经将我们的Spring库从4.0.6升级到了4.3.2。我们的一个测试在运行4.3.2时失败。下面是有问题的代码: @Bean(name = SCHEDULER_FACTORY) public SchedulerFactoryBean getSchedulerFactory() { SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean(); schedulerFactory.setCo

我真的被难住了。我已经将我们的Spring库从4.0.6升级到了4.3.2。我们的一个测试在运行4.3.2时失败。下面是有问题的代码:

@Bean(name = SCHEDULER_FACTORY)
public SchedulerFactoryBean getSchedulerFactory()
{
    SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
    schedulerFactory.setConfigLocation(schedulerConfig);
    schedulerFactory.setResourceLoader(null);
    schedulerFactory.setDataSource(dataSource);
    schedulerFactory.setJobFactory(getSchedulerJobFactory());
    schedulerFactory.setAutoStartup(false);

    return schedulerFactory;
}

@Bean(name = SCHEDULER)
public Scheduler getScheduler()
{
    return getSchedulerFactory().getScheduler();
}
我在类文件org/springframework/scheduling/quartz/SchedulerFactoryBean$$EnhancerBySpringCGLIB$$bee87fe8$$EnhancerBySpringCGLIB$$6bb26669中得到了错误
java.lang.ClassFormatError:replicate方法名和签名

使用spring 4.0.6框架运行测试效果很好,但在4.3.2中,它失败了。在使用4.0.6时,我使用的是cglib无依赖项库。在4.3.2中,无论我是否使用cglib,测试都会失败


Spring将cglib和objensis嵌入到4.3.*核心库中。“此外,Spring Framework 4.3将更新的ASM 5.1、cglib 3.2.4和objensis 2.4嵌入到Spring core.jar中。”

我们在SpringFramework4.0.6中使用了Java8和cglib no-DEP2.2。我们尝试在有独立库和没有独立库的情况下运行这段代码,并看到了相同的结果

堆栈跟踪:

  Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.quartz.Scheduler]: Factory method 'getScheduler' threw exception; nested exception is org.springframework.cglib.core.CodeGenerationException:java.lang.reflect.InvocationTargetException  >null
           at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
           at org.springframework.beans.factory.support.ConstructorResolver$3.run(ConstructorResolver.java:582)
           at java.security.AccessController.doPrivileged(Native Method)
           at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579)
           ... 112 more
  Caused by: org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException  >null
           at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:345)
           at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:492)
           at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 188.486 sec
           at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
           at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
           at java.util.concurrent.FutureTask.run(FutureTask.java:266)
           at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
           at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
           at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
           at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
           at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
           at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:337)
           at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.enhanceFactoryBean(ConfigurationClassEnhancer.java:452)
           at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:338)
           at com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35.getSchedulerFactory(<generated>)
           at com.example.SpringConfiguration.getScheduler(SpringConfiguration.java:242)
           at com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35.CGLIB$getScheduler$24(<generated>)
           at com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35$$FastClassBySpringCGLIB$$a2a6e004.invoke(<generated>)
           at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
           at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:356)
           at com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35.getScheduler(<generated>)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:498)
           at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
           ... 115 more
  Caused by: java.lang.reflect.InvocationTargetException
           at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:498)
           at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:413)
           at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:336)
           ... 140 more
  Caused by: java.lang.ClassFormatError: Duplicate method name&signature in class file org/springframework/scheduling/quartz/SchedulerFactoryBean$$EnhancerBySpringCGLIB$$bee87fe8$$EnhancerBySpringCGLIB$$6bb26669
           at java.lang.ClassLoader.defineClass1(Native Method)
           at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
           ... 145 more
原因:org.springframework.beans.beans实例化异常:未能实例化[org.quartz.Scheduler]:工厂方法“getScheduler”引发异常;嵌套异常为org.springframework.cglib.core.CodeGenerationException:java.lang.reflect.InvocationTargetException>null
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:189)
位于org.springframework.beans.factory.support.ConstructorResolver$3.run(ConstructorResolver.java:582)
位于java.security.AccessController.doPrivileged(本机方法)
位于org.springframework.beans.factory.support.ConstructorResolver.InstanceUsingFactoryMethod(ConstructorResolver.java:579)
…还有112个
原因:org.springframework.cglib.core.CodeGenerationException:java.lang.reflect.InvocationTargetException>null
位于org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:345)
位于org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:492)
位于org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
测试运行:1,失败:0,错误:1,跳过:0,运行时间:188.486秒
位于org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
位于org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
位于org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
位于org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
位于org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
位于org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
位于org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:337)
位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.enhanceFactoryBean(ConfigurationClassEnhancer.java:452)
位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:338)
在com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35.getSchedulerFactory()上
位于com.example.SpringConfiguration.getScheduler(SpringConfiguration.java:242)
在com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35.CGLIB$getScheduler$24()上
在com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35$$FastClassBySpringCGLIB$$a2a6e004.invoke()上
位于org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:356)
在com.example.SpringConfiguration$$EnhancerBySpringCGLIB$$54d3cb35.getScheduler()上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:162)
…还有115个
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.GeneratedMethodAccessor26.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.springframework.cglib.core.reflectils.defineClass(reflectils.java:413)
位于org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:336)
…140多个
原因:java.lang.ClassFormatError:类文件org/springframework/scheduling/quartz/SchedulerFactoryBean$$EnhancerBySpringCGLIB$$bee87fe8$$EnhancerBySpringCGLIB$$6bb26669中存在重复的方法名称和签名
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:763)
…还有145个

这显然是cglib中的一个错误。它似乎不能确定类型层次结构中的一个方法与另一个方法相等。您是否将Java 8与接口中的默认方法结合使用

Cglib并没有真正针对现代Java版本和经验进行测试