tomcat 和webapp下jar包冲突
来源:互联网 发布:乒乓球 胶皮 知乎 编辑:程序博客网 时间:2024/06/05 10:17
1,开发过程中遇到过这样一个情况,在本地tomcat下开发调试正常,打包到测试环境的tomcat下所有页面都变成空白页。通过日志发现httpRequest为空,通过对比发现 tomcat的sevlet.jar和webapp的不一致导致。换成相同版本即可
2,tomcat的WebappClassLoader findclass先从自己的webappx下加载类,没有则找父类。和java默认的加载方式不同。
据此可以认为,在web项目WEB-INF\lib下的jar包优先级高于jboss,tomcat 下的lib.
两处版本不一致的话会导致程序异常。
比较省事的办法是WEB-INF\lib下不再保留重复的jar包,实在闲着没事的话可以自己写个类加载器替换tomcat下WebappClassLoader改变加载顺序。
但是还可能有隐患,WebappClassLoader权限较低,它加载的类只能访问web应用下的资源,如果servlet-api.jar等包用到其他资源时可能出现异常。
这个没实际测过,只是推测。但是catalina要提供对整个容器的支持,servlet-api实现对http协议的封装转换用到外部资源的可能性很大。
2,tomcat的WebappClassLoader findclass先从自己的webappx下加载类,没有则找父类。和java默认的加载方式不同。
public Class findClass(String name) throws ClassNotFoundException { // 先自己加载类,找不到则请求parent来加载,注意这点和java默认的委托模式不同 Class clazz = null; try { if ((clazz == null)) { clazz = findClassInternal(name); } if ((clazz == null) && hasExternalRepositories && !searchExternalFirst) { clazz = super.findClass(name); } if (clazz == null) { throw new ClassNotFoundException(name); } } catch (ClassNotFoundException e) { if (log.isTraceEnabled()) log.trace(" --> Passing on ClassNotFoundException"); throw e; } return (clazz);}
据此可以认为,在web项目WEB-INF\lib下的jar包优先级高于jboss,tomcat 下的lib.
两处版本不一致的话会导致程序异常。
比较省事的办法是WEB-INF\lib下不再保留重复的jar包,实在闲着没事的话可以自己写个类加载器替换tomcat下WebappClassLoader改变加载顺序。
但是还可能有隐患,WebappClassLoader权限较低,它加载的类只能访问web应用下的资源,如果servlet-api.jar等包用到其他资源时可能出现异常。
这个没实际测过,只是推测。但是catalina要提供对整个容器的支持,servlet-api实现对http协议的封装转换用到外部资源的可能性很大。
0 0
- tomcat 和webapp下jar包冲突
- tomcat jar包冲突
- 是tomcat的lib文件夹jar包和项目的lib文件下的jar包冲突了
- 怎样解决maven项目中依赖的jar包和tomcat中的jar包的冲突
- tomcat5的common/lib目录下jar包和WEB/lib下jar包冲突问题
- tomcat5的common/lib目录下jar包和WEB/lib下jar包冲突问题
- Tomcat部署项目jar包冲突问题
- Tomcat Jar包与应用Jar包冲突
- tomcat jar 包 与 项目jar包冲突问题解决
- 【已解决】web项目中新加的jar包和tomcat自带的jar冲突问题
- uber jar,shade jar和包冲突
- 项目jar包 与tomcat 自带jar 冲突
- webshere下jar包冲突解决办法
- 项目自带servlet-api.jar和jsp-api.jar,发布到tomcat下冲突
- 解决项目中jsp-api,servlet-api和tomcat中jar包冲突问题
- spring 和 hibernate jar包冲突问题
- Hibernater和weblogic jar包冲突解决方法
- studio so库和jar包冲突
- 千万别理程序员
- 二叉树的创建 前序 中序 后序遍历以及最大值与最小值的差
- 详解java类的生命周期
- 那些年看不懂的C++
- mysql+mybatis where in带多个参数
- tomcat 和webapp下jar包冲突
- Android中Context
- iOS 文件操作
- Android—— 4.2 Vold挂载管理_MountService (六)
- Android程序员必备精品资源
- find命令不查找特定目录和只查找当前目录
- 程序员周末怎么过才充实
- JS自动给文本框的数字加千分位
- AOJ 2130 Billion Million Thousand