NoSuchMethodException - EnhancerBySpringCGLIB - не удалось получить компонент из контекста приложения Spring - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть jar, который, будучи помещенным в tomcat lib, не делает никаких исключений или ошибок, где, как будто я помещаю тот же самый jar в войну, выдает исключение и не может получить бин.

Ограничения моего приложения: у меня не может быть определений bean-компонента xml.

Я пробовал другие возможные решения, упомянутые в разных темах, например

- Удаление 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...