classpath中具有相同名称的两个类

时间:2011-08-04 02:57:46

标签: java classpath

如果我有两个同名的类在我的类路径中的两个不同的jar中说Matcher.java,哪一个将由JVM拾取,那么我是否可以建议JVM选择一个特定的?

4 个答案:

答案 0 :(得分:15)

引用Oracle

  

规格订单

     

指定多个类路径条目的顺序是   重要。 Java解释器将在中查找类   目录按它们出现在类路径变量中的顺序。在   在上面的例子中,Java解释器将首先寻找所需的   目录C:\ java \ MyClasses中的类。只有它找不到   解释器看起来在该目录中具有正确名称的类   在C:\ java \ OtherClasses目录中。

提到的例子:

  

C:> java -classpath C:\ java \ MyClasses; C:\ java \ OtherClasses ...

所以是的,它会加载出现在首先指定的类路径中的那个。

答案 1 :(得分:2)

第一个在类路径中找到的。即,将使用包含您的类的第一个jar。

您无法在JVM中控制它,但可以控制类路径 - 确保在类路径中首先列出/找到您想要的那个。

答案 2 :(得分:1)

有一种方法可以指定从中挑选类的位置..您可以创建自己的类加载器,根据您的要求加载类。

您可以使用以两种方式加载的课程

  1. 将其作为参数传递给jvm(java -Djava.system.class.loader =com.somepackage.YourCustomClassLoader com.somepackage.YourMainClass
  2. 以编程方式使用类加载器加载特定类(请参阅提供的链接)。
  3. 这里有一些关于类加载的有用链接

答案 3 :(得分:0)

使用时使用类的完全限定路径。但是如果你的意思是同名的类也有相同的包 - 修复class-path。

相关问题