码迷,mamicode.com
首页 > 编程语言 > 详细

浅谈JNDI导入jar包的先后次序影响程序运行结果的问题

时间:2016-08-25 22:03:17      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:jndi jar包

    今天下午我做了一个关于学生信息管理系统的demo,主要功能是使用jdbc对学生信息进行增删改查,整体的逻辑按照JNDI进行,使用oracle数据库。

    第一次运行,果不其然出现了异常,参照下图:


技术分享

   

    经过检查,我发现我oracle的jar包导入路径错了,没有按照JNDI中的要求导入到tomcat文件夹下的lib文件夹中,而是导入到了项目的lib文件夹中。我向tomcat文件夹下的lib文件夹中添加了同名的jar包,我以为这样一来,程序就能正常运行了。

    然而并没有。

    异常还是这个异常,ClassNotFoundException,无法加载oracle数据库的驱动。

    我意识到可能是因为两个同名的jar包同时存在,tomcat在处理上可能存在某一方面的优先级。于是我决定把之前错误路径上的jar包给删掉,只保留正确路径上的jar包。经过这次改动,程序可以正常运行了。


技术分享

技术分享

    

    到了这里,这个项目运行成功了,然而接下来才是正题。

    项目成功运行后,我突发奇想,如果在已存在正确路径中jar包的基础上,在错误的路径上再导入一个jar包,会不会重新产生异常呢?

    答案再次出乎我的意料,还是没有。程序运行得非常顺利。

    我逐渐意识到,这个现象的产生,可能与jar包导入的先后次序有关系。于是我新建了一个项目,项目内容与这个相同。我先导入了一个错误(指路径不为tomcat文件夹下lib文件夹中的jar包,下文的正确同义)的jar包,运行程序,然后导入了正确的jar包,这次的运行结果与第一次运行的结果相同。

    第二次,我先导入了一个正确的jar包,运行程序,然后导入了错误的jar包,这次的运行结果与上文运行成功的效果相同。

    那么,如果正确和错误的jar包都存在,但是在两个jar包都导入完成之前没有运行程序,结果又会怎么样呢?带着这个疑问,我开始了第三次的测试。测试的结果是程序可以成功运行。

    经过上面三次的测试,对于JNDI中jar包导入先后次序影响运行结果的问题,我简单总结如下:

   (1)某一时刻,只要运行了含有某个jar包的程序,即便在别的路径导入一个同名的jar包,运行的结果都会与之前的一致。只有把先导入的jar包在其路径中删除,程序才会在另一个jar包的基础上运行。

   (2)在JNDI中,如果同时存在正确和错误的jar包,且在两个jar包都导入完成前没有运行程序,则程序能够正常运行。


本文出自 “11962685” 博客,请务必保留此出处http://11972685.blog.51cto.com/11962685/1842617

浅谈JNDI导入jar包的先后次序影响程序运行结果的问题

标签:jndi jar包

原文地址:http://11972685.blog.51cto.com/11962685/1842617

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!