Spring:嵌套异常是java.lang.NoClassDefFoundError:org/aopalliance/aop/Advice
堆栈跟踪:Spring:嵌套异常是java.lang.NoClassDefFoundError:org/aopalliance/aop/Advice,java,spring,Java,Spring,堆栈跟踪: 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]; r
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
我还尝试单独或一起添加:aopalliance.jar&aopalliance-alpha1.jar,但错误不会消失
这里也有类似的问题,所以:
编辑编辑项目中的其他类吟游诗人
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!");
}
}
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();
}
}
sauredamselquest.java
package com.java.spring;
public class RescueDamselQuest implements Quest {
@Override
public void embark() {
System.out.println("Damsel rescue quest is on.");
}
}
我正在使用Spring 3.2
《强刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮支支支支支支支支支支支支支支支支支刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮刮支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支支
我没有使用Maven。请不要提供Maven相关的解决方案,除非没有它SpringAOP是不可能的。
项目快照:
在SPRING库中,我有SPRING下载的所有jar。是否有可能某些特定于spring的jar与aopalliance jar冲突?
如果任何人有一些没有Maven的类似且简单的工作示例,请提供。
感谢
~Mohit看起来您只是将
aopalliance
jar添加到IDE(Eclipse?)的构建类路径中。这说明IDE没有显示错误,并且接受构建应用程序。但实际上,您还必须将其添加到运行类路径中
根据您使用的IDE,另一个菜单可能允许对其进行配置。但是如果你想在IDE之外运行它,你必须把jar放在你的普通类路径中,或者把它和其他现有的jar放在一起,或者(最好)把你的用户或系统类路径改成包含jar的文件夹
如果您需要并且我了解您的系统,我可以详细说明…请与com.springsource.org.aopalliance-X.X.X.jar交叉检查您缺少依赖项。不确定您是如何处理依赖关系的,但只要在IVY或您使用的任何东西中添加JAR即可。您一定在使用某些东西来添加Spring 3.2 马文中心: 常春藤示例:
Maven还有其他可用的依赖信息
如果这是一个web应用程序,请确保JAR位于APPNAME/web-INF/lib中。请完全确保您的
pom.xml
文件中包含以下内容:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
当然,您必须为Spring和AOP设置或配置每个版本
后来我才意识到您没有使用Maven,即使在中,您也可以根据我在上面共享的依赖项下载所需的jar以及aopalliance jar。您是否已将这些jar添加到构建路径中 aspectjrt
springaop
aspectjweaver
如果没有,您可以尝试添加这些..
注意:使用适当版本的jar…
我完全删除了SPRING-LIBRARY,然后一个接一个地添加了所有需要的jar以及cglib-nodep-2.2.jar。
我的代码中还有一个拼写错误
public class RescueDamselQuest implements Quest {
班级名称
但是我确信这个拼写错误不是我得到这个例外的原因。在从头开始添加jar之后,我得到了一个错误,即没有找到knights-aop.xml中提到的bean。。某物。。。就在那时我发现我有这个打字错误
这就是我现在添加罐子的方式:
我希望有人能从这个答案中得到帮助
编辑编辑
asm all和cglib nodep不是必需的。另外,spring下载中的一些jar导致了问题,因为我尝试添加spring下载中获得的所有jar,它开始再次显示旧的异常。因此,最好在需要时添加jar。add
aopalliance.jar
如果您声明添加了jar,则说明添加错误或缺少另一个类。我强烈建议使用maven之类的工具来管理你的依赖关系,而不是自己去弄清楚它们。这是一个非常基本的虚拟应用程序。我认为现在使用Maven可能有点过火,可能是在应用程序发展之后。即使是一个基本的应用程序,它也能为您节省大量搜索依赖项的时间。此外,您可能希望使用更新的spring版本。您使用的是mvn还是类似的版本?添加依赖项,问题是因为您使用的是maven的一个模块,它使用的是另一个java projet,通常是某个接口的一个实现……我使用的是Eclipse4.4.0。目前我还没有计划在IDE之外运行它。不幸的是,我不知道如何为Eclipse配置运行路径,并且目前无法访问Eclipse IDE。您可以尝试使用Run->Run配置…->Classpath
但我无法测试。如果不成功,如果您将包含aopalliance
jar的目录添加到环境变量CLASSPATH
它将在Run->Run Configurations中的CLASSPATH下显示我添加的jar…->Classpath4向上投票!!!这是否意味着这个答案适用于4个不同的人,而不是一个拼命寻找答案的人???我确信我已经检查了几乎所有在线可用的罐子:(.如果您有一些没有Maven的类似且简单的工作示例,请提供它。这将非常有帮助。我在过去10天中一直在努力解决这个问题。您没有提到jar的适当版本或解决方法。我使用了spring-aop-3.2.10、aopalliance-1.0、aspectjrt-1.5.0、aspectjweaver-1.8.2。我也遇到了同样的错误。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
public class RescueDamselQuest implements Quest {