问题描述
eclipse写的web项目,自带servlet-api.jar和jsp-api.jar,发布到tomcat后首先是警告servlet-api.jar没有加载,其次就是出错“SEVERE: Servlet.service() for servlet jsp threw exceptionjava.lang.NullPointerException”搜索后发现tomcat的lib目录自带servlet-api.jar和jsp-api.jar包,而且会优先加载,导致出现提示servlet-api.jar没有加载,而且不能正常显示jsp页面,方法就是从项目里删除这两个包,但是删除后用到servlet的源码会被eclipse提示有错。有什么办法能让tomcat启动时优先加载项目自己的包,而且不要重复加载已经加载过的包? 问题补充:请问楼下两位,我是eclipse建立的ssh项目,如何在发布时不发布这两个包
解决方案
项目中的jar删除或者设置buildpath不引用,然后buildpath中添加libray引用,可以引用server run time的library,指定为tomcat,就可以避免servlet-api以及jsp-api两个jar包的冲突了
解决方案二:
我之前做也遇到了些问题, 我这个方法可以。 可以在eclipse当中添加一个User Library(Window-->Preferences-->Java-->Build Path --> User library) 把jsp-api.jar和servlet-aip.jar 两个jar文件加入进去,一定要把下面system library 打钩, 然后在项目引入这个library编译, 这样再部署的时候就不会把这2个jar文件部署到tomcat了
解决方案三:
context.xml中增加<Loader delegate="true"></Loader>
解决方案四:
1、把eclipse和tomcat改成同意的jdk2、最好用eclipse自带的servers引入tomcat来发布,或者使用tomcat插件3、你那样的问题是配置错误,你在研究下吧。只要用一个相同的版本的tomcat就行
解决方案五:
楼主用maven了吗,maven的话,你的项目依赖servlet-api.jar和jsp-api.jar这2个依赖,但是你的部署环境已经提供了,那么这两个依赖的scope设置为provided即可。或者手动把tomcat的lib下的那2个包,替换成你的那2个包
解决方案六:
你可以将jar放置在项目中,这样项目中就没有报编译错误了。在将jar发布的时候不要发布这两个jar就可以了。这样就可以实现,既不报错,也能在tomcat中正常使用。