我有一个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)