两个具有相同的名称在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).

这里的类加载一些有用的链接

  • Oracle - How to write your own class loader
  • A very nice post on writing custom class loader
回答#3

在classpath中找到的第一个。即,第一个JAR包含您的类将被使用。

你无法控制它从JVM内,但可以控制的classpath -确保你想要的是一个上市/在classpath中首先发现。

回答#4

使用它时使用的类的完全限定路径。但是,如果你是指具有相同的名称类,也具有相同的封装 - 修复类路径。

 

你可能感兴趣的:(两个具有相同的名称在CLASSPATH中的类)