NoSuchMethodException-EnhancerBySpringCGLIB-无法从Spring应用程序上下文中获取Bean

时间:2018-11-27 20:35:11

标签: java spring applicationcontext nosuchmethoderror spring-bean

我有一个jar,当将其放置在tomcat lib中时不会发生任何异常或错误,就好像我将同一jar放入战争中一样,会引发异常并且无法获取bean。

我的应用程序限制:我无法定义xml bean。

我尝试了在其他线程中提到的其他可能的解决方案,例如

-删除cglib.jar并使用cglib-nodep.jar-不起作用

-添加默认构造函数-不起作用

班级:

package com.test.data;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.test.MyFactoryConfig;
import com.test.MyUserInfoImpl;

public class UserApp {

    private static AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
            MyFactoryConfig.class);

    public UserApp() {
    }

    public String read(String id) {
        String name = (MyUserInfoImpl) ctx.getBean("myBean").read(id);
        return name;
    }
}

配置类:

package com.test;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyFactoryConfig {


    @Bean
    String testString() {
        return new String("TestName");
    }


    @Bean
    public MyUserInfoImpl myBean() {
        MyUserInfoImpl bean = new MyUserInfoImpl();
        bean.setName(testString());
        return bean;
    }
}

还有把罐子放在战争文件中的例外情况

2018-11-27 11:34:25,140 124307 INFO  [org.springframework.context.annotation.AnnotationConfigApplicationContext:583] (http-nio-9443-exec-2:::::) - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@695bb3c2: startup date [Tue Nov 27 11:34:25 PST 2018]; root of context hierarchy
Nov 27, 2018 11:34:25 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [action] in context with path [] threw exception [Filter execution threw an exception] with root cause
java.lang.NoSuchMethodException: com.test.MyFactoryConfig$$EnhancerBySpringCGLIB$$762d9e2a.CGLIB$SET_THREAD_CALLBACKS([Lorg.springframework.cglib.proxy.Callback;)
    at java.lang.Class.getDeclaredMethod(Class.java:2130)
    at org.springframework.cglib.proxy.Enhancer.getCallbacksSetter(Enhancer.java:809)
    at org.springframework.cglib.proxy.Enhancer.access$000(Enhancer.java:63)
    at org.springframework.cglib.proxy.Enhancer$EnhancerFactoryData.<init>(Enhancer.java:414)
    at org.springframework.cglib.proxy.Enhancer.wrapCachedClass(Enhancer.java:709)
    at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
    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.createClass(ConfigurationClassEnhancer.java:138)
    at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:110)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:393)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:249)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:283)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:127)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
    at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
    at com.test.data.UserApp.<clinit>(UserApp.java:15)

0 个答案:

没有答案
相关问题