读书分享

程序员记事---貌似不可能的可能

2019-08-01  本文已影响2人  五分钟读书

    “今天真是阳光明媚的一天,这么好的天气就应该努力工作。”

    早上出门的小明望着太阳,伸着懒腰,打着哈欠说道。

    “hi,小明,早上好呀!吃什么呢,这么香!”小云看着端着打包盒的小明说道。

    “没什么,炒粉而已,天天嗦粉,不嗦不行啊!”

    “对了,领导待会找你有事,你九点半去下领导办公室。”

    “好嘞,云姐,马上就去”

    打完招呼的小明,光速吃完米粉之后,稍微收拾了下,去了领导办公室。

    “小明啊,最近移动组项目比较紧急,就抽你去那支持下。对了,组长小石,待会会把材料交给你。”领导对着面前站立的小明说道。

    “好的,李总!”小明恭敬的回答道。

    “hi,石哥,刚才李总让我来分担下你的需求,我现在应该做什么呢?”

    “哦,你现在先熟悉下编程环境,争取今天把项目跑起来!”

    “那项目代码在那个svn下?”

    “哦,就在平时移动组例会上分享的材料上面就有,我待会就转给你,你记得接受一下。”

    “好嘞!”

    拿到svn路径的小明,此时面临着一个困惑,上面显示有三个项目。

    “诶,石哥,这个路径下面有三个项目啊,这怎么搞?”

    “哦,这三个项目暂且就叫A、B、C项目吧,A和B项目都是maven项目,C项目是库lib依赖项目。A项目呢依赖B和C项目,你在编译配置上把B和C依赖上,就行了。”

    “好的,石哥,我自己先去跑,还有不会的就再问你。”

    说完这话,小明就独自去旁边,摆弄接受的新项目了。

    “唉,奇了怪了,怎么老是报错啊!”

    “那是maven配置出错了”一旁的小张说道。

    “配置出错?”

    “是啊,我们公司那么多项目,每个稍微大点的项目,maven仓库都是独立创建的,你的maven配置指向的是另一个项目组的仓库,jar包不匹配。”

    "哦,原来是这样啊,那如何解决这个问题呢?"小明对旁边的小张说道。

    “这样吧,石哥比较忙,我就先把移动组的maven-setting配置先给你吧!你先替换你之前的那个试试先。”

    “好的,谢谢张哥了”

    “哪里哪里!客气了“小张摆摆手说道。

    于是,小明拿着小张给的setting重新配置项目,这次他希望能够把项目跑起来。

    一个小时之后。

    “诶,怎么回事啊,怎么没有标红报错,运行的时候就报错了呢?”看到这种错误的小明抓耳挠腮,百思不得其解。

    “让我看看”一旁的小张听到小明这样说,连忙凑过身来看。

    “哦。cause by : ClassNotFoundException:HashMap,XXX。这个错啊,这个HashMap不是jdk自带的类吗?抱着个错,可能是jkd版本不对,你的jdk是1.7。这个项目可能要1.8。”小张若有所思的说道。

    “好的,我马上换成1.8的jdk版本。”小明回道。

    半个小时过去了。

    “怎么还是报一样的错误呢?”

    没想到换了jdk版本,还是得到同样的结果。

    “这个是什么错误?”隔个过道的小红问道。

    “就是项目配置啥的都完整,也没报什么语法错误,就是不知为啥运行起来就报错。”小明对小红解释道。

    “如果配置没错的话,jdk也没错,会不会是IDE本身的错误呢?上次我也碰到这钟类似的问题,怎么看好像都没什么问题,一运行起来,就报错,还是各种奇奇怪怪的错。然后找到老大解决,老大花了4个小时才把问题解决,说是eclipse配置有问题,最后把配置改好,就没什么问题了。”

    “那我就换个IDE最新版本试试!”

    说罢,小明就找最近的移动组同事要到了最新的编译器压缩包,压缩之后,按照先前的配置,一步一步的把项目重新搭了起来。

    “我的天呐,怎么还是报了这个错误!”此时的小明就要发狂了,都想要把自己的头发都扯下来。

    “发生了什么事,发那么大火?”听到暴躁小明的声音,前方的小马问道。

    “我也不知道什么问题,项目都部署好了,就是运行报错,几种方法我都试过了,就是不行。真是气死我了。”小明忿忿道。

    “哦,我看你主项目和依赖的项目都是maven项目,会不会包没有下完整?之前就碰到包没有下完整,调试一天的事”

    “包没有下完整?”小明惊讶道,一般来说,公司内网的仓库来出来的jar包都很完整。一来是因为内网速度快,二来呢就是内网部署的仓库jar包都是市场上好的jar改良的。

     "是啊,你把本地仓库的jar包删了,从新拉一份吧!"

     “好的,多谢提醒”小明对小马谢道。

    半个小时过去了,问题还是没有解决,依旧如初,此时的小明都不想干了,瘫倒在工位上。

    这个时候,有一个娇小的实习女生慢吞吞的走到小明旁边,说道:

    “学长,有没有可能,你主项目的jar包配置和依赖项目的jar包配置有冲突呢?导致初始化bean的时候,程序找不到相应的jar包?”

    此声犹如惊雷,一下子把小明惊醒。

    “对呀,我怎么没有想到呢?”小明如梦初醒,“谢谢你啊,小彭!”

    “没事的,学长,这个是我们学习时就碰到的问题。”

    听过小彭的提议,小明仔细检查过pom文件中的jar包配置,发现的确存在同名的jar包,但是版本不一样。删除完同名jar包后的小明说道,“这下总可以了吧!”

    兴奋的小明,重新跑起了程序。

    “嗯?怎么回事,怎么还是不行?”

    又遇到挫折的小明,并没有像之前那样颓废,而是冷静的思考。

    “应该就是jar包定位错误啊,去除同样的jar包之后,应该就不会有问题啊。再加上石哥之前说的项目依赖另外两个项目,一个是maven,一个就是lib项目,没有错啊!都是按照石哥说的做啊。”小明心中嘀咕道。

    “等等!”此时的小明突然想到了什么。

    “如果石哥说的话是错的,也许他很久没做忘了,或者记岔劈了,主项目没有依赖这两个项目的话。”想到这里,小明急忙忙的找到错误的debug语句,运用反编译工具,定位到报错的jar包。

    然后,小明收起eclipse工作区,定眼一看。

    “果然如此”小明松了一口气。

    定位的jar包不在主项目,也不在依赖的maven项目,而是在第二个依赖的lib项目里面。而配置在主项目A中已经存在所需jar包,所以大家理所应当的认为,出错就在maven项目里。没想到最后错误竟然在被忽视的C项目中。

    这样说来,石哥的话是错的。我们工作中,很多情况下,先入为主。总是认为交代给我们工作的人说的话永远没有错,查找错误也不会直接想要最开始的地方。也许,最开始给的推断条件就是个伪命题。

    在经过多方研究,排除了一个又一个的错误原因之后。哪怕最后的结果再怎么令人难以相信,它也是事实的真相,永远在那里。

上一篇 下一篇

猜你喜欢

热点阅读