从两个冲突的jar导入类时,使用哪一个?

时间:2012-04-25 17:11:26

标签: java import jar

在Java中,我最近遇到了一个案例,我得到两个不同的罐子,每个罐子都定义了一个类。问题是这些罐子中的一个已经过时了,有问题的课程缺少一个存在于一个罐子而不是另一个罐子里的方法。

所以,我收到的错误是找不到代码中使用的方法。我最终能够通过移除旧jar来解决这个问题,以便导入正确的jar。

许多人使用相同的代码(使用相同的两个,冲突的,导入的jar)并且没有这个问题。所以,他们一定是在导入最新的jar。

我的问题是:是什么原因导致我将一个罐子导入另一个罐子?什么逻辑决定哪个“被使用”?

谢谢!

3 个答案:

答案 0 :(得分:6)

根据订单。第一个将被使用,第二个将开始引起问题。

确保不包含同一类的不同版本。你可能会遇到奇怪的错误。

答案 1 :(得分:2)

类路径确定顺序的方式与PATH确定如果您有多个具有相同名称的程序将运行的程序相同。

你可能会遇到奇怪的错误,但大多数时候有一个jar的多个版本不是问题(意味着它可能已经存在一段时间并且很难测试)

答案 2 :(得分:1)

看看你的CLASSPATH。您的jar文件在CLASSPATH上的显示顺序是什么?

如果您没有显式设置CLASSPATH变量(或命令行参数,或者您的框架找到类),那么请设置它以使您想要的类更早出现。