tomcat8改了jar加载顺序的踩坑记录
作者:weixw 发布时间:2021-03-12 18:44:43
记录一次调试经历
起因
相同的jar,服务器正常而本地起的项目一直报下图中的错。
解释
首先,这段代码是hibernate执行有参数的hql的过程中报错的,最上面那层,对string进行强转导致的。
看hql及java对象,发现,参数为string,而参数对应的java对象中的字段类型是BigDcimal。猜测可能是问题出现的原因,但相关的代码没有找到,继续看代码、调试
堆栈信息中 bind()方法的作用(和报错有关的),从 中获取type和value,对value进行强转,其中type是在设置参数阶段设置的,如下图,先根据映射关系找对应的java对象中的类型,找不到采用value.getclass();
org.hibernate.impl.AbstractQueryImpl中,
中间结论
我本地没问题,代码就是那么写的,报错是应该的,那服务器是怎么跑通的?
继续
趁早上没人,远程调试下服务器项目,过程中,想到是否有人重写了hibernate的源码导致的,搜一下,果然。。。
hibernate源码
重写的代码,修改了下,保证了对参数是string的兼容。
联想一下,tomcat的jar包加载顺序从8起发生了改变,不再像之前按照字母顺序,先加载的生效。而8之后,该用别的方式,该方式导致不同操作系统结果不同,虽然两者都用的8,而我是mac,它是linux。。。当时看到那篇博客就觉得有坑,没想到坑来的这么快。
至于不同操作系统具体的加载方式,需要看tomcat源码,还没看~~~
结论
由于生效的class不同,导致本地和服务器的结果不同,不想看源码的话,可以先把hibernate的重复类删掉;应该是可以对源码进行修改,比如改成按照字母顺序
不得不吐槽下,tomcat改jar加载顺序是为啥呢,原来的按照字母顺序多么清晰明了。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。
来源:https://juejin.im/post/5d40ef7ef265da03da247162
猜你喜欢
- PHPWind v7.3.2开启门户模式为默认后打开read页面导致浏览器死掉问题。打开:mode/area/template/read.h
- 中国雅虎开始逐渐更换各个频道的 Logo,将原来红色的 Logo 更换为紫色的 Logo,和 Yahoo! 相一致。而且页眉的导航链接也更换
- 一、 前言随着各大网站纷纷推出邮箱收费服务,广大网民正在逐渐适应 "有偿服务"的概念,与此同时,他们也对收费邮箱的服务质
- 08年4月,或者再晚些的6月,SNS开始真正成为互联网圈内的第一热衷话题,起到推波助澜作用的,kaixin001首当其冲。病毒式的营销、 *
- 这两天,互联网上出现了这样的观点:“垃圾信息是搜索不公正主因” 。谷歌中国认为,这是在搜索的“公正性”与“准确性”两个不同层次的事情间偷换概
- 域名的概念与机制1. 介绍本文主要介绍域名(DNS)的一些机制及实现方法,下面我们就具体看一下它的情况。1.1. 域名的历史产生域名的的根本
- 这个系统是国内非常流行的视频点播系统,之前的1.5版本漏洞非常多,2.0版本在安全方面有所提高,但是依然有漏洞存在。看代码\inc\ajax
- 自从丘仕达那个单页面一天6万IP的实验发布以来,网上就掀起一股单页面优化讨论的风潮,眼红的纷纷跟风仿效,但也有一些人质疑单页面优化的可取性。
- 在工作中,我们经常需要查看服务器的实时网卡流量。通常,我们会通过这几种方式查看Linux服务器的实时网卡流量。1. sar -n DEV 1
- 由于本人做网吧维护的,本来和做网站没什么关系,随着业务量的增加。客户的数量也多了起来。关系处的久了。有些客户就给我提了一些意见,当然是和他们
- 先在硬盘建立域和虚拟主机的实际目录,建立以下三个实际目录:c: \ inetpub\ wwwroot\ mywebc: \ inetpub\
- 11月3日早间消息,花旗银行发布最新报告称,预估腾讯第三季网络游戏收入环比增长15%至14.3亿元,总收入及净利润则分别为32.8亿元及13
- 有用户问我不住在美国,是否可以订制Web主机呢?其实没有什么太大的限制,只要不住在下面所列出的国家,即便你不住在美国,也可以订制Web托管。
- 本文介绍Google和百度两大搜索引擎的网页收录习惯、网页排名习惯等,帮助站长合理优化自己的网页,达到Google百度两面笑的目的。Goog
- 序言如果你使用VMware安装虚拟机,那么你必定会选择网络连接,那么vmware提供主要的3种网络连接方式,我们该如何抉择呢?他们有什么不同
- 问题一:我们的营销部门在为网站的内容写作上投入了大量资源,但是好象我们在搜索引擎中的排名并不高,而我们竞争对手的排名却很高。我们需要全部重写
- Windows 2000 Server安装成功后,一般会启动一个默认的Web站点,为整个网络提供Internet服务。在中小型局域网中,服务
- 前言如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样
- 默认的方式下linux会把文件访问的时间atime做记录,这在绝大部分的场合都是没有必要的,如果遇到机器IO负载高或是CPU WAIT高的情
- 软件发行周期的终结正如在上面关于Google和netscape的讨论中所指出的,互联网时代定义特性之一就是,它是以服务方式传递,而不是产品。