中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 淺談JNDI導入兩個同名不同路徑jar包的先后次序影響程序運行結果的問題

淺談JNDI導入兩個同名不同路徑jar包的先后次序影響程序運行結果的問題

發布時間:2020-06-30 20:35:18 來源:網絡 閱讀:1486 作者:白無雙 欄目:開發技術

    今天下午我做了一個關于學生信息管理系統的demo,主要功能是使用jdbc對學生信息進行增刪改查,整體的邏輯按照JNDI進行,使用oracle數據庫。

    第一次運行,果不其然出現了異常,參照下圖:


淺談JNDI導入兩個同名不同路徑jar包的先后次序影響程序運行結果的問題

   

    經過檢查,我發現我oracle的jar包導入路徑錯了,沒有按照JNDI中的要求導入到tomcat文件夾下的lib文件夾中,而是導入到了項目的lib文件夾中。我向tomcat文件夾下的lib文件夾中添加了同名的jar包,我以為這樣一來,程序就能正常運行了。

    然而并沒有。

    異常還是這個異常,ClassNotFoundException,無法加載oracle數據庫的驅動。

    我意識到可能是因為兩個同名的jar包同時存在,tomcat在處理上可能存在某一方面的優先級。于是我決定把之前錯誤路徑上的jar包給刪掉,只保留正確路徑上的jar包。經過這次改動,程序可以正常運行了。


淺談JNDI導入兩個同名不同路徑jar包的先后次序影響程序運行結果的問題

淺談JNDI導入兩個同名不同路徑jar包的先后次序影響程序運行結果的問題

    

    到了這里,這個項目運行成功了,然而接下來才是正題。

    項目成功運行后,我突發奇想,如果在已存在正確路徑中jar包的基礎上,在錯誤的路徑上再導入一個jar包,會不會重新產生異常呢?

    答案再次出乎我的意料,還是沒有。程序運行得非常順利。

    我逐漸意識到,這個現象的產生,可能與jar包導入的先后次序有關系。于是我新建了一個項目,項目內容與這個相同。我先導入了一個錯誤(指路徑不為tomcat文件夾下lib文件夾中的jar包,下文的正確同義)的jar包,運行程序,然后導入了正確的jar包,這次的運行結果與第一次運行的結果相同。

    第二次,我先導入了一個正確的jar包,運行程序,然后導入了錯誤的jar包,這次的運行結果與上文運行成功的效果相同。

    那么,如果正確和錯誤的jar包都存在,但是在兩個jar包都導入完成之前沒有運行程序,結果又會怎么樣呢?帶著這個疑問,我開始了第三次的測試。測試的結果是程序可以成功運行。

    經過上面三次的測試,對于JNDI中jar包導入先后次序影響運行結果的問題,我簡單總結如下:

   (1)某一時刻,只要運行了含有某個jar包的程序,即便在別的路徑導入一個同名的jar包,運行的結果都會與之前的一致。只有把先導入的jar包在其路徑中刪除,程序才會在另一個jar包的基礎上運行。可以把這種現象理解為一種“先入為主”的效果。

   (2)在JNDI中,如果同時存在正確和錯誤的jar包,且在兩個jar包都導入完成前沒有運行程序,則程序能夠正常運行。


    注:在本個demo中,我使用的是Java EE 5.0,Tomcat 6.0,更高級別的版本可能不會出現此類問題。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭锦后旗| 内乡县| 威远县| 泸溪县| 元氏县| 崇明县| 贺州市| 綦江县| 广州市| 南木林县| 温泉县| 城口县| 大石桥市| 温宿县| 英德市| 翁牛特旗| 昭觉县| 淮北市| 富川| 栾城县| 武穴市| 陕西省| 滦南县| 托克托县| 嘉鱼县| 汕尾市| 丹寨县| 大同市| 固安县| 寻甸| 阿勒泰市| 闽侯县| 金秀| 华阴市| 兴山县| 上杭县| 喀喇沁旗| 肥乡县| 神农架林区| 丹江口市| 友谊县|