Eclipse启动项目正常,放到tomcat下就报错的一例

一个老的ssh的项目,进行二次开发(增加一些新功能)后,首先用Eclipse中集成的Tomcat启动没有任何问题,但是把启动后的webapps下得目录放到 windows的普通tomcat下启动,居然启动不起来

报错如下:

各种折腾,首先发现,在win下的Tomcat目录conf下得配置文件 server.xml 中的最后部分,host标签中多了一个这个标签

<Context path="" docBase="。。。。。。。。。。 />
 
里面有个 eclipse的引用,直接把这行标签删掉,再次启动,异常改变了。说明解决了一些问题。


然后异常是有两处报:

Unsupported major.minor version 52.0解决办法

根据上面链接,找到解决办法为修改 eclipse中当前项目的三处jdk版本,但是修改过程中又报错:

Project facet jst.web.jstl has not been defined.

解决方法,参见上文。

然后,终于,项目可以在 windows 的 对立 Tomcat中启动了。


但是将其拷贝到Linux中运行,继续报错

查看日志,报错如下:
 

java.lang.NoClassDefFoundError: org/springframework/core/env/ConfigurableEnvironment

各种百度,均不能解决问题。

后来同事找到解决方法:

删除项目中的一个 spring jar包:

问题解决。

原因:

项目是个老项目,没有用maven关联jar包,除了常规依赖外,其他jar包都是放在 WEB-INF的lib目录下:

我们看到,实际上,项目中有两个 spring-context jar包,可能导致了冲突。

下面这个jar是5.0版本的,而其它spring相关jar都是3.0版本的。

其实是因为同事增加了一个定时任务的功能,在定时任务功能的代码中用到了一个注解:

就是这个注解,据说它是 spring-context 4.0以上jar包中才有的,因为报错,所以同事引入了 spring-contxt 5.0 的jar包,但是5.0的jar包中可能需要依赖spring core等其他spring高版本的jar包,而我们项目中其他所有的spring jar包都是 3.0版本的,而且有两个contxt jar,这些都有可能导致了

 ConfigurableEnvironment 异常的发生。

所以,解决版本就是,删掉 spring-contxt 5.0 的jar包,同时注释掉报错的代码及其关联代码:



猜你喜欢

转载自www.cnblogs.com/libin6505/p/10376376.html
今日推荐