我正在导出一个包含类的JAR:
public class SerializerHelper {
public String toJson(final Object src) {...}
}
和trialApplicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="serializerHelper" class="com.trial.SerializerHelper"/>
</beans>
然后,我将该JAR导入另一个项目,并在其applicationContext.xml上导入试用上下文,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Replace all @Autowired by its instances -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<import resource="classpath*:trialApplicationContext"/>
<bean id="booksSerializer" class="com.trial.BooksSerializerImpl" />
...
</beans>
然后,我在我班上使用那个bean:
public interface BooksSerializer {
String getBooks();
}
public class BooksSerializerImpl implements BooksSerializer {
@Autowired
private SerializerHelper serializerHelper;
...
}
但是,代码失败并出现以下错误:
java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.springframework.beans.factory.BeanCreationException:在URL [... applicationContext中定义的名称为'booksSerializer'的bean创建时出错。 xml]:合并bean定义的后处理失败;嵌套异常是java.lang.IllegalStateException:无法为自动装配元数据内省bean类[com.trial.BooksSerializerImpl]:找不到依赖于它的类 java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.springframework.beans.factory.BeanCreationException:在URL中定义名为'booksSerializer'的bean时出错[jar:file:/ ... .jar!/applicationContext.xml]:合并bean定义的后处理失败;嵌套异常是java.lang.IllegalStateException:无法为自动装配元数据内省bean类[com.trial.BooksSerializerImpl]:找不到依赖于它的类 在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:921) 在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:900) 在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:684) 在com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2044) 在com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1690) 在com.sun.enterprise.web.WebApplication.start(WebApplication.java:107) 在org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) java.lang.Exception:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.springframework.beans.factory.BeanCreationException:创建名为'booksSerializer'的bean在URL [jar: file:/ .... jar!/ applicationContext]:合并bean定义的后处理失败;嵌套异常是java.lang.IllegalStateException:无法为自动装配元数据内省bean类[com.trial.BooksSerializerImpl]:找不到依赖于它的类 在com.sun.enterprise.web.WebApplication.start(WebApplication.java:136) 在org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) java.lang.Exception:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.springframework.beans.factory.BeanCreationException:在URL中定义名为'productSerializer'的bean时出错[jar: file:/ .... jar!/applicationContext.xml]:合并bean定义的后处理失败;嵌套异常是java.lang.IllegalStateException:无法为自动装配元数据内省bean类[com.trial.BooksSerializerImpl]:找不到依赖于它的类 在com.sun.enterprise.web.WebApplication.start(WebApplication.java:136) 在org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 加载应用程序时出现异常:java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.springframework.beans.factory.BeanCreationException:创建名为'booksSerializer'的bean在URL [jar: file:/ .... jar!/applicationContext.xml]:合并bean定义的后处理失败;嵌套异常是java.lang.IllegalStateException:无法为自动装配元数据内省bean类[com.trial.BooksSerializerImpl]:找不到它依赖的类]]
当我尝试在泽西服务器上运行项目时,会发生此错误。
我做错了什么?非常感谢。
答案 0 :(得分:1)
请使用上下文组件扫描来扫描您的包,以便弹簧容器可以发现您的声明spring bean。
在applicationContext.xml
<context:component-scan base-package="com.jartrial.*, com.trial.*" />