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启动时优先加载项目自己的包,而且不要重复加载已经加载过的包?

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

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

楼主用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]

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

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