2013-03-27 61 views
0

我是一个天真的春天的用户。我刚开始学习它。我想通过理解例子来学习春天。所以我试着从链接https://github.com/SpringSource/spring-petclinic安装petclicnic样本应用程序。当我尝试运行mvn install命令时,出现以下错误 java.lang.NoClassDefFoundError:org/springframework/beans/factory/NoUniqueBeanDe finitionException。我试图通过使用https://jira.springsource.org/browse/SPR-10218中提供的信息来解决此问题。我添加了所有的依赖关系。现在我收到以下错误。请帮助问题在春天petclinic applicaiton

ERROR ContextLoader - Context initialization failed 
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 
at org.springframework.beans.factory.support.Abstract AutowireCapableBean 
Factory.<init>(AbstractAutowireCapableBeanFactory. java:121) ~[spring-beans-3.1.4 
.RELEASE.jar:3.1.4.RELEASE] 
at org.springframework.beans.factory.support.Abstract AutowireCapableBean 
Factory.<init>(AbstractAutowireCapableBeanFactory. java:168) ~[spring-beans-3.1.4 
.RELEASE.jar:3.1.4.RELEASE] 
at org.springframework.beans.factory.support.DefaultL istableBeanFactory. 
<init>(DefaultListableBeanFactory.java:163) ~[spring-beans-3.1.4.RELEASE.jar:3.1 
.4.RELEASE] 
at org.springframework.context.support.AbstractRefres hableApplicationCon 
text.createBeanFactory(AbstractRefreshableApplicat ionContext.java:194) ~[spring- 
context-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.context.support.AbstractRefres hableApplicationCon 
text.refreshBeanFactory(AbstractRefreshableApplica tionContext.java:127) ~[spring 
-context-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.obtain 
FreshBeanFactory(AbstractApplicationContext.java:5 37) ~[spring-context-3.2.2.REL 
EASE.jar:3.2.2.RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.refres 
h(AbstractApplicationContext.java:451) ~[spring-context-3.2.2.RELEASE.jar:3.2.2. 
RELEASE] 
at org.springframework.web.context.ContextLoader.conf igureAndRefreshWebA 
pplicationContext(ContextLoader.java:389) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.R 
ELEASE] 
at org.springframework.web.context.ContextLoader.init WebApplicationConte 
xt(ContextLoader.java:294) ~[spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.ContextLoaderListe ner.contextInitiali 
zed(ContextLoaderListener.java:112) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 

at org.apache.catalina.core.StandardContext.listenerS tart(StandardContex 
t.java:4791) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.StandardContext.startInte rnal(StandardContex 
t.java:5285) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.util.LifecycleBase.start(Lifec ycleBase.java:150) 
[tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.ContainerBase$StartChild. call(ContainerBase. 
java:1559) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.ContainerBase$StartChild. call(ContainerBase. 
java:1549) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:303) [n 
a:1.6.0_20] 
at java.util.concurrent.FutureTask.run(FutureTask.jav a:138) [na:1.6.0_20 
] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run Task(ThreadPoolExec 
utor.java:886) [na:1.6.0_20] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor 
.java:908) [na:1.6.0_20] 
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_20] 
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisito 
r 
at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoa 
der.java:1714) ~[tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoa 
der.java:1559) ~[tomcat-embed-core-7.0.30.jar:7.0.30] 
... 20 common frames omitted 
INFO XmlWebApplicationContext - Closing Root WebApplicationContext: startup dat 
e [Wed Mar 27 11:31:56 CDT 2013]; root of context hierarchy 
WARN XmlWebApplicationContext - Exception thrown from ApplicationListener handl 
ing ContextClosedEvent 
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - c 
all 'refresh' before multicasting events via the context: Root WebApplicationCon 
text: startup date [Wed Mar 27 11:31:56 CDT 2013]; root of context hierarchy 
at org.springframework.context.support.AbstractApplic ationContext.getApp 
licationEventMulticaster(AbstractApplicationContex t.java:347) [spring-context-3. 
2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.publis 
hEvent(AbstractApplicationContext.java:334) [spring-context-3.2.2.RELEASE.jar:3. 
2.2.RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.doClos 
e(AbstractApplicationContext.java:1049) [spring-context-3.2.2.RELEASE.jar:3.2.2. 
RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.close(
AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RE 
LEASE] 
at org.springframework.web.context.ContextLoader.clos eWebApplicationCont 
ext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.ContextLoaderListe ner.contextDestroye 
d(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.apache.catalina.core.StandardContext.listenerS top(StandardContext 
.java:4831) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.StandardContext.stopInter nal(StandardContext 
.java:5478) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.util.LifecycleBase.stop(Lifecy cleBase.java:232) [ 
tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.util.LifecycleBase.start(Lifec ycleBase.java:160) 
[tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.ContainerBase$StartChild. call(ContainerBase. 
java:1559) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.ContainerBase$StartChild. call(ContainerBase. 
java:1549) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:303) [n 
a:1.6.0_20] 
at java.util.concurrent.FutureTask.run(FutureTask.jav a:138) [na:1.6.0_20 
] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run Task(ThreadPoolExec 
utor.java:886) [na:1.6.0_20] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor 
.java:908) [na:1.6.0_20] 
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_20] 
WARN XmlWebApplicationContext - Exception thrown from LifecycleProcessor on con 
text close 
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refr 
esh' before invoking lifecycle methods via the context: Root WebApplicationConte 
xt: startup date [Wed Mar 27 11:31:56 CDT 2013]; root of context hierarchy 
at org.springframework.context.support.AbstractApplic ationContext.getLif 
ecycleProcessor(AbstractApplicationContext.java:36 0) [spring-context-3.2.2.RELEA 
SE.jar:3.2.2.RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.doClos 
e(AbstractApplicationContext.java:1057) [spring-context-3.2.2.RELEASE.jar:3.2.2. 
RELEASE] 
at org.springframework.context.support.AbstractApplic ationContext.close(
AbstractApplicationContext.java:1010) [spring-context-3.2.2.RELEASE.jar:3.2.2.RE 
LEASE] 
at org.springframework.web.context.ContextLoader.clos eWebApplicationCont 
ext(ContextLoader.java:558) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.springframework.web.context.ContextLoaderListe ner.contextDestroye 
d(ContextLoaderListener.java:143) [spring-web-3.2.2.RELEASE.jar:3.2.2.RELEASE] 
at org.apache.catalina.core.StandardContext.listenerS top(StandardContext 
.java:4831) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.StandardContext.stopInter nal(StandardContext 
.java:5478) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.util.LifecycleBase.stop(Lifecy cleBase.java:232) [ 
tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.util.LifecycleBase.start(Lifec ycleBase.java:160) 
[tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.ContainerBase$StartChild. call(ContainerBase. 
java:1559) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at org.apache.catalina.core.ContainerBase$StartChild. call(ContainerBase. 
java:1549) [tomcat-embed-core-7.0.30.jar:7.0.30] 
at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:303) [n 
a:1.6.0_20] 
at java.util.concurrent.FutureTask.run(FutureTask.jav a:138) [na:1.6.0_20 
] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run Task(ThreadPoolExec 
utor.java:886) [na:1.6.0_20] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor 
.java:908) [na:1.6.0_20] 
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_20] 

回答

0

将asm.jar添加到classpath.You可能还会获得其他classnotfound异常,因为spring内部使用许多第三方库。我通常会去jarfinder.com提供类名,然后下载该类的jar并放入类路径中。

+0

我尝试添加的依赖关系为 \t org.springframework \t org.springframework.asm \t $ {弹簧framework.version}在pom.xml 。它似乎没有帮助我。 – user2216702 2013-03-27 17:28:57

+0

更多我发现ClassVisitor在春天2.5.x中出现。我认为它不在3.x中。我正在使用3.x.仍然由于某种原因它试图使用班级访问者。我无法发布pom.xml作为注释不允许这样的字符数量。 – user2216702 2013-03-27 17:39:26

0

异常明确表示

java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 

这意味着你必须不包含在你的classpath春季ASM库。

将spring-asm.jar文件包含在您的类路径中以解决问题。

+0

我尝试添加的依赖关系为 \t org.springframework \t org.springframework.asm \t $ {弹簧framework.version}在pom.xml 。它似乎没有帮助我。 – user2216702 2013-03-27 17:29:39

+0

你有没有设置属性'@ {spring-framework.version}'? – 2013-03-27 18:12:20