tomcat jar 包 与 项目jar包冲突问题解决

Posted java-北京-菜鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat jar 包 与 项目jar包冲突问题解决相关的知识,希望对你有一定的参考价值。

项目中有时候会遇到jar包冲突的问题, 报以下异常

Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;] with root cause
java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/Jsp

是因为 jasper-compiler.jar     jasper-runtime.jar  这几个jar包的问题,

因为tomcat6中没有这几个jar包, tomcat7却自带了这几个jar包, 当项目从tomcat6移到tomcat7时, 就会报jar包冲突的错误, 这时候我们经常的选择是删除项目中的jar包,

后来发现在tomcat的context.xml中配置一个参数 <Loader delegate="true" />, 就可以解决,

原因

True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。
False,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。

以上是关于tomcat jar 包 与 项目jar包冲突问题解决的主要内容,如果未能解决你的问题,请参考以下文章

tomcat web工程 jar包冲突解决方法

Tomcat JAR包冲突报错

weblogic下包冲突 导致@Valid失效 不能正确校验表单 分析与解决

了不得,我可能发现了Jar 包冲突的秘密

开发使用tomcat生产使用weblogic造成jar包冲突如何解决?

Idea查看jar包冲突