[英]Two classes with same name in classpath
如果我有兩個同名的類在我的類路徑中的兩個不同的jar中說Matcher.java,其中一個將由JVM拾取,那么我是否可以建議JVM選擇一個特定的?
引用Oracle :
規格訂單
指定多個類路徑條目的順序很重要。 Java解釋器將按照它們在類路徑變量中出現的順序查找目錄中的類。 在上面的示例中,Java解釋器將首先在目錄C:\\ java \\ MyClasses中查找所需的類。 只有當它在該目錄中找不到具有正確名稱的類時,解釋器才會查看C:\\ java \\ OtherClasses目錄。
提到的例子:
C:> java -classpath C:\\ java \\ MyClasses; C:\\ java \\ OtherClasses ...
所以是的,它將加載出現在首先指定的類路徑中的那個。
第一個在類路徑中找到。 即,將使用包含您的類的第一個jar。
您無法從JVM中控制它,但您可以控制類路徑 - 確保在類路徑中首先列出/找到您想要的那個。
有一種方法可以指定應該從哪個類中選擇...您可以創建自己的類加載器,它將根據您的要求加載類。
你可以用2種方式加載你的類
java -Djava.system.class.loader =com.somepackage.YourCustomClassLoader com.somepackage.YourMainClass
) 這里有一些關於類加載的有用鏈接
使用時使用類的完全限定路徑。 但是,如果您的意思是具有相同名稱的類也具有相同的包 - 修復類路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.