gpt4 book ai didi

java - Spring in Action III-1第1章示例,应用无法正常运行

转载 作者:行者123 更新时间:2023-12-02 05:58:55 24 4
gpt4 key购买 nike

我刚从Spring in action 3rd Edition开始学习Spring,而我已经在第一章中遇到了问题-有关骑士的示例。一切都很好,但是当我用aop在beans.xml中编写代码时,我的应用程序停止运行,这是beans.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"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">

<bean id="knight" class="com.mol.spring.action.classes.BraveKnight">
<constructor-arg ref="dragonquest" />
</bean>

<bean id="dragonquest" class="com.mol.spring.action.classes.DragonSlayingQuest" />
<bean id="damselquest" class="com.mol.spring.action.classes.DamselResquingQuest" />
<bean id="minstrel" class="com.mol.spring.action.classes.Minstrel" />

<aop:config>
<aop:aspect ref="minstrel">
<aop:pointcut id="embark" expression="execution(* *.embarkOnQuest(..))" />
<aop:before method="singBeforeQuest" pointcut-ref="embark" />
</aop:aspect>
</aop:config>
</beans>


一切正常,直到我编写 <aop:config>为止,并且如果我评论 <aop:before />标记,应用程序也可以正常工作。如果需要其他类,我将包括它们。

错误信息:

kwi 03, 2014 1:29:45 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3abc8690: startup date [Thu Apr 03 13:29:45 CEST 2014]; root of context hierarchy
kwi 03, 2014 1:29:45 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [beans.xml]
kwi 03, 2014 1:29:46 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14b05b39: defining beans [knight,dragonquest,damselquest,minstrel,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.aop.aspectj.AspectJPointcutAdvisor#0,embark]; root of factory hierarchy
kwi 03, 2014 1:29:46 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14b05b39: defining beans [knight,dragonquest,damselquest,minstrel,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.aop.aspectj.AspectJPointcutAdvisor#0,embark]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'knight' defined in class path resource [beans.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Cannot create inner bean '(inner bean)' of type [org.springframework.aop.aspectj.AspectJMethodBeforeAdvice] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)': Cannot resolve reference to bean 'embark' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embark': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:454)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.mol.spring.action.BraveKnightTest.main(BraveKnightTest.java:12)


我删去了下面的所有内容,我认为这并不重要。

最佳答案

我认为您在类路径中缺少AspectJ JAR。

尝试将其添加到您的POM.XML

<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.12</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.12</version>
</dependency>


只需检查版本是否兼容。

顺便说一句,如果您不使用Maven,请尝试添加相应的JAR。

关于java - Spring in Action III-1第1章示例,应用无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22836794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com