簡體   English   中英

classpath中具有相同名稱的兩個類

[英]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種方式加載你的類

  1. 將它作為參數傳遞給jvm( java -Djava.system.class.loader =com.somepackage.YourCustomClassLoader com.somepackage.YourMainClass
  2. 以編程方式使用類加載器來加載特定的類(請參閱提供的鏈接)。

這里有一些關於類加載的有用鏈接

使用時使用類的完全限定路徑。 但是,如果您的意思是具有相同名稱的類也具有相同的包 - 修復類路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM