您的位置:首页 > 运维架构 > Tomcat

Tomcat7+Spring3使用时遇到的两个异常

2015-10-04 09:02 716 查看
今天突然注意到Tomcat7支持servlet3,就想把现有的项目部署到tomcat7上试试,于是就在官网下载apache-tomcat-7.0.34-windows-x86.zip,经过一顿折腾后,把项目部署好了。

异常一:

用eclipse-helios启动TOMCAT7的时候,出现了异常,如下:

java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:60)

Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory

TOMCAT6使用的时候一切正常,为什么到了TOMCAT7后就不能正常加载此类了呢?我又直接在bin目录下执行startup.bat,发现没有这个异常,所以有种感觉是与eclipse有关。最后发现此类在../tomcat/bin/目录下,经过一顿google后,有人说是要用最新版本的eclipse,于是又下载了eclipse-juno版本,结果还是不行。

最后终于在一文章中找到了解决的方法,可以在eclipse的Preferences>Tomcat>JVM Settings>Classpath(Before generated classpath)>Jar/Zip,在弹出框中选择../tomcat/bin/tomcat-juli.jar,保存之后,再从eclipse中启动Tomcat7就不会出现此异常了。

至于这个异常的原因,估计是现在的eclipse还不能很好的支持Tomcat7吧,因为在最新版本eclipse-juno中也只支持到Tomcat6,而我在配置tomcat7的时候也是在tomcat6选项中进行的。

异常二:

上面的异常解决后,再启动tomcat后,出现了另一个异常,如下:

2012-12-21 16:13:12 org.apache.catalina.core.ContainerBase addChildInternal

严重: ContainerBase.addChild: start:

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)

at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)

at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:619)

Caused by: java.lang.NullPointerException

at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:142)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5274)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

... 11 more

仔细看异常抛出过程就会发现,一定是与Spring有关系,当前我使用的Spring版本为3.1.0.M2,又是一顿折腾,半天又过去了,最后解决问题的还是google,看来以后有问题还是直接google的好,不要指望其它了,不过或许我写了这个记录后,可以有其它选择了。

原来这是spring的一个BUG吧,可去https://jira.springsource.org/browse/SPR-8496查看一下,当前需要做的就是更新Spring到新的版本应该就可以了,于是到官网下载Spring3.2.0.RELEASE版本,等待。。。(下载中)

下载后,包结构有一点点变化,对比后更新相应的jar包,再次启动tomcat7,一切正常!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: