又是生动的一课:关于Jar包的部署

xingqiliudehuanghun 2009-09-30 11:22:12
最近的一次错误调试经历又给我上了生动的一课。
最近用EOS6.0做开发需要写一个简单的报表程序,没有任何难度,唯一有难度的地方时那些专业的算法,这方面有一个学数学的同事专门负责,所以接到这个任务的时候我感到很轻松。我的同事的素质很高以前在金融公司做过,仅用了变天多一些时间就把算法什么的写好了,打了个Jar包给我。我接到Jar包后简单的问了下他如何使用就开始写程序。因为实在没有什么难度就是把算好的数据输出图形什么的,个吧小时就搞定了,没有任何悬念的通过了本机测试,然后发布。
但部署后,问题来了,提示NoSuchMethodException!。开始我以为是没有部署上什么的,这种问题在普元的系统上还是时有发生的,有的时候就是不熟不上,重新部署重启下就好了。我就按部就班,重部署重启,问题依旧,再试还是一样。看来这次和以往不太一样,只能手工检查哪些文件缺失。一一检查了下shared/lib、web-info/lib以及一些jsp文件文件都全。这下傻眼了
以前还没有遇到这样的问题。然后就开始清缓存、重打包、重发布、单步调试的乱折腾,一直到下班,没有任何结果。
第二天早上感觉自己是在不知道检查哪了,没办法了只能请教公司资历不算最老但技术最好的同事了。我同事听了我的简单描述又看了下错误输出,也是和我一样一一进行排查。当排查到shared/lib下时没等我同事反应我知道问题在哪了,“版本冲突“。原来在之前我的同事写了些算法,并打成Jar包给一个同事使用。后来我接手这个任务的时候还是这个同事给我们写算法,他的算法中需要依赖原来写的一些对象,但需要适当的修改,于是他把原来的一些类增加了些构造函数什么的,就又重新打包了下发给了我。就这样这个版本的Jar包被放到同一目录下,里边类的名称完全相同。而且不知道是出于何种原因,可能是文件的命名或其他的,虚拟机先从旧版本的Jar文件中找到了我要请求的类,但由于是老版本的,缺少后来加进去的构造函数。这就是为什么在部署环境总是提示NoSuchMethod的,而在本机一切正常的原因。
以前多少也听说过类的加载顺序啊、版本冲突啊这写,但感觉这些东西离我很远,是很少遇到的问题,跟自己关系不大,只要自己学好如何写程序就行了。这次让自己亲身经历了,真的是别有一番滋味。放在这给大家提个醒吧,以后遇到这样的问题记得检查下你的部署环境是否有不同版本的Jar文件
...全文
811 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mackle 2009-10-10
  • 打赏
  • 举报
回复
长见识!
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sunnyfun888 的回复:]
如果公司内部的项目都出先这种问题,那说明项目管理有问题。
[/Quote]
不错我们公司的项目管理非常混乱,几乎谁用什么Jar包就直接放进去,除非提示文件已经存在了
MARS_LQ 2009-09-30
  • 打赏
  • 举报
回复
这个错误在SSH中也可能出现阿,比如commons、logging啊这些包最容易出现版本重复了,Struts引入了一个,Spring有引入了一个......
yanchong 2009-09-30
  • 打赏
  • 举报
回复
初学。
zhaoyunrui 2009-09-30
  • 打赏
  • 举报
回复
这怎么和我最近做的项目有一个同样的问题,也是别人弄好的JAR,我拿来用的,可是项目一直报错,大概搞了三天多才搞定的.幸好发现的早,才能准时交项目...哈哈
x114944880 2009-09-30
  • 打赏
  • 举报
回复
又张见识了
wang1986614 2009-09-30
  • 打赏
  • 举报
回复
学习下,经验!
接分!
aaby167 2009-09-30
  • 打赏
  • 举报
回复
你是要散分么?
那我就接着吧
  • 打赏
  • 举报
回复
我也希望用SSH,可是公司用普元,安装好以we后就有不下几十个Jar包,而且普元有一点比较特殊他用到的Jar包根本不能放到web-inf/lib下那样他不能用,只能放到shared下。而且他的开发环境和部署环境有一些差异。
老猫的TOM 2009-09-30
  • 打赏
  • 举报
回复
呵呵,这种问题,起始你注意还是可以避免的,比方说,利用myeclipse不是项目ssh框架,有时候就会出现jar包重复的问题,导致报错,那最好的办法就是手动创建架构,减少不需要包的使用。
imasmallbird 2009-09-30
  • 打赏
  • 举报
回复
呵呵,写在博客里吧~~
COCO_AS 2009-09-30
  • 打赏
  • 举报
回复
最好用MAVEN来管理JAR包,最后布署也简单,版本都在包名上,非常好识别。
大川101 2009-09-30
  • 打赏
  • 举报
回复
好贴
sunnyfun888 2009-09-30
  • 打赏
  • 举报
回复
如果公司内部的项目都出先这种问题,那说明项目管理有问题。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧