堆栈跟踪:
Oct 24, 2014 8:12:04 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@50df2e: startup date [Fri Oct 24 08:12:04 IST 2014]; root of context hierarchy
Oct 24, 2014 8:12:05 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [knights-aop.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [knights-aop.xml]; nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.java.spring.SpringDemo.main(SpringDemo.java:12)
Caused by: java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
at org.springframework.aop.config.ConfigBeanDefinitionParser.getAdviceClass(ConfigBeanDefinitionParser.java:410)
at org.springframework.aop.config.ConfigBeanDefinitionParser.createAdviceDefinition(ConfigBeanDefinitionParser.java:366)
at org.springframework.aop.config.ConfigBeanDefinitionParser.parseAdvice(ConfigBeanDefinitionParser.java:332)
at org.springframework.aop.config.ConfigBeanDefinitionParser.parseAspect(ConfigBeanDefinitionParser.java:227)
at org.springframework.aop.config.ConfigBeanDefinitionParser.parse(ConfigBeanDefinitionParser.java:115)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:195)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
... 14 more
Run Code Online (Sandbox Code Playgroud)
配置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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="knight" class="com.java.spring.BraveKnight">
<constructor-arg ref="quest" />
</bean>
<bean id="quest" class="com.java.spring.ResqueDamselQuest" />
<bean id="minstrel"
class="com.java.spring.Minstrel" /> <!--<co id="co_minstrel_bean"/>-->
<aop:config>
<aop:aspect ref="minstrel">
<aop:pointcut id="embark"
expression="execution(* *.embarkOnQuest(..))" /> <!--<co id="co_define_pointcut"/>-->
<aop:before pointcut-ref="embark"
method="singBeforeQuest"/> <!--<co id="co_minstrel_before_advice"/>-->
<aop:after pointcut-ref="embark"
method="singAfterQuest"/> <!--<co id="co_minstrel_after_advice"/>-->
</aop:aspect>
</aop:config>
</beans>
Run Code Online (Sandbox Code Playgroud)
我的主要课程:
public class SpringDemo {
public static void main(String[] args) {
final ApplicationContext applicationContext = new ClassPathXmlApplicationContext("knights-aop.xml");
final Knight braveKnight = (Knight) applicationContext.getBean("knight");
braveKnight.embarkOnQuest();
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试单独和一起添加:aopalliance.jar和aopalliance-alpha1.jar,但错误不会消失.
SO上有类似的问题:spring嵌套异常是java.lang.NoClassDefFoundError:org/aopalliance/aop/Advice
###########编辑###########更新:项目中的其他类##
Minstrel.java
package com.java.spring;
public class Minstrel {
public void singBeforeQuest(){
System.out.println("Fa la la Theknight is so brave!");
}
public void singAfterQuest(){
System.out.println(
"Tee hee he The brave knight did embark on a quest!");
}
}
Run Code Online (Sandbox Code Playgroud)
BraveKnight.java
package com.java.spring;
public class BraveKnight implements Knight {
private Quest quest;
BraveKnight(Quest quest) {
this.quest = quest;
}
@Override
public void embarkOnQuest() {
quest.embark();
}
}
Run Code Online (Sandbox Code Playgroud)
RescueDamselQuest.java
package com.java.spring;
public class RescueDamselQuest implements Quest {
@Override
public void embark() {
System.out.println("Damsel rescue quest is on.");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Spring 3.2
################## EDIT2 ##################
我没有使用Maven.除非没有Spring AOP,否则请不要提供Maven相关的解决方案.
项目快照:
在SPRING LIBRARY里面我有所有用Spring下载的jar.是否有可能某些弹簧特定的罐子与aopalliance jar相冲突?
如果有人在没有Maven的情况下有一些类似且简单的工作示例,请提供.
谢谢
〜莫希特
看起来你只是将aopalliancejar 添加到IDE 的构建类路径(Eclipse?).这解释了IDE显示没有错误并接受构建应用程序.但实际上,您还必须将其添加到运行类路径中.
根据您使用的IDE,另一个菜单可能允许配置它.但是如果你想在IDE之外运行它,你必须将jar放在普通的类路径中,或者把它放在其他现有的jar中,或者通过改变你的用户或系统类路径来包含包含的文件夹(会更好)罐子.
如果你需要我可以详细说明,如果我知道你的系统......
我完全删除了SPRING-LIBRARY,然后一一添加了所有需要的jar以及cglib-nodep-2.2.jar。
我的代码中也存在拼写错误<bean id="quest" class="com.java.spring.ResqueDamselQuest" />
public class RescueDamselQuest implements Quest {
Run Code Online (Sandbox Code Playgroud)
班级名称。
但我确信这个拼写错误并不是我遇到异常的原因。从头开始添加罐子后,我得到了这个错误,说没有找到 bean,如在 Knights-aop.xml 中提到的那样...... ...... 就是当我发现我有这个拼写错误时。
这就是我现在添加罐子的方式:

我希望有人可以从这个答案中得到帮助。
###########编辑###########
不需要 asm-all 和 cglib-nodep。另外,来自 spring download 的一些 jar 引起了问题,当我尝试添加在 spring download 中获得的所有 jar 时,它开始再次显示旧的异常。因此,最好在需要时添加 jar。
| 归档时间: |
|
| 查看次数: |
23577 次 |
| 最近记录: |