不同的jar里边相同的包名类名怎么区别导入
生活随笔
收集整理的這篇文章主要介紹了
不同的jar里边相同的包名类名怎么区别导入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在做項目的時候遇到了一個很有意思的問題,折磨了我很長時間,不過最終還是解決了,特留此文紀念一下。
遇到的問題: 同樣一段代碼,在同事那就好使,在我這就找不到一個方法。引用的包也都是相同的,這種問題還是第一次遇到,怎么辦呢? 找啊找啊找原因,查看引用的包,才發現我所引用的包名和同事引用的包名是相同的,不同的是我兩引用的包不是一個jar。也就是說不同的jar里包含了相同的包名和類名。 問題的原因找到了,那怎么解決呢?怎么指定調用自己需要的jar中的包呢?要解決這個問題,還得先了解jvm加載的方法。jvm在加載包的時候,是從classpath的路徑從上往下找,找到第一個后就將其引用。
?
包名類名都相同,那jvm沒法區分了,一般ide是會提示發生沖突而報錯的,如果不報錯的,那就只有第一個包被引入(在classpath路徑下排在前面的包),第二個包會在classloader加載類時判斷重復而忽略。
知道了jvm加載包的方法,那么解決問題就很容易了,只需要將需要引用包的jar放在前邊就可以了,也就是說放在classpath路徑的上邊。
?
? ? ??
轉載于:https://www.cnblogs.com/6tian/p/4177920.html
總結
以上是生活随笔為你收集整理的不同的jar里边相同的包名类名怎么区别导入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript 的默认对象
- 下一篇: lua常用操作