eclipse项目发布到tomcat后,自带的库和tomcat的库发生冲突

eclipse写的web项目,自带servlet-api.jar和jsp-api.jar,发布到tomcat后首先是警告servlet-api.jar没有加载,其次就是出错
“SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException”

搜索后发现tomcat的lib目录自带servlet-api.jar和jsp-api.jar包,而且会优先加载,导致出现提示servlet-api.jar没有加载,而且不能正常显示jsp页面,方法就是从项目里删除这两个包,但是删除后用到servlet的源码会被eclipse提示有错。有什么办法能让tomcat启动时优先加载项目自己的包,而且不要重复加载已经加载过的包?

6个回答

项目中的jar删除或者设置buildpath不引用,然后buildpath中添加libray引用,可以引用server run time的library,指定为tomcat,就可以避免servlet-api以及jsp-api两个jar包的冲突了

你可以将jar放置在项目中,这样项目中就没有报编译错误了。在将jar发布的时候不要发布这两个jar就可以了。这样就可以实现,既不报错,也能在tomcat中正常使用。

piggachen
piggachen 你试试在properties的java Build Path 中选择Libraries。在里面选择不用的jar,remove.
6 年多之前 回复
abcbuzhiming
abcbuzhiming 请问一下,如何不发布这两个包
6 年多之前 回复

楼主用maven了吗,maven的话,你的项目依赖servlet-api.jar和jsp-api.jar这2个依赖,但是你的部署环境已经提供了,那么这两个依赖的scope设置为provided即可。或者手动把tomcat的lib下的那2个包,替换成你的那2个包

1、把eclipse和tomcat改成同意的jdk
2、最好用eclipse自带的servers引入tomcat来发布,或者使用tomcat插件
3、你那样的问题是配置错误,你在研究下吧。只要用一个相同的版本的tomcat就行

context.xml中增加[code="java"][/code]

weixin_42671644
weixin_42671644 此配置不是优先在项目中查找,但能解决问题,具体见http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
6 年多之前 回复

我之前做也遇到了些问题, 我这个方法可以。

可以在eclipse当中添加一个User Library(Window-->Preferences-->Java-->Build Path --> User library) 把jsp-api.jar和servlet-aip.jar 两个jar文件加入进去,一定要把下面system library 打钩,
然后在项目引入这个library编译, 这样再部署的时候就不会把这2个jar文件部署到tomcat了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问