兩個具有相同的名稱在CLASSPATH中的類

http://d2100.com/questions/817

兩個具有相同的名稱在CLASSPATH中的類

如果我有兩個名稱相同的類説在我的類路徑的兩個不同的JAR將拾起JVM Matcher.java,反正是有,我可以建議JVM選擇一個特定的呢?

4條回答

回答#1

引述甲骨文

規範秩序

您指定多個類路徑項的順序是很重要的。 Java解釋器將查找的目錄中的類,它們在類路徑變量中出現的順序。在上面的例子中,Java解釋器將首先查找所需目錄中的C類: JAVA MyClasses。只有當它沒有找到一個適當的名稱,在該目錄的類口譯看看在C: JAVA OtherClasses目錄。

這個例子中提到:

C:> Java的類路徑C: JAVA MyClasses C: JAVA OtherClasses ...

所以,是的,它會加載一個,先指定的類路徑中出現。

回答#2

還有一種方法,為您指定的類應該選擇從..您可以創建自己的類加載器加載類,根據您的要求。

你可以使用你的類加載2種方式

  1. Pass it as a parameter to jvm (java -Djava.system.class.loader =com.somepackage.YourCustomClassLoader com.somepackage.YourMainClass)
  2. Use the class loader programatically to load a specific class (refer the links provided).

這裏的類加載一些有用的鏈接

回答#3

在classpath中找到的第一個。即,第一個JAR包含您的類將被使用。

你無法控制它從JVM內,但可以控制的classpath -確保你想要的是一個上市/在classpath中首先發現。

回答#4

使用它時使用的類的完全限定路徑。但是,如果你是指具有相同的名稱類,也具有相同的封裝 - 修復類路徑。