在Java中,我最近遇到了一个案例,我得到两个不同的罐子,每个罐子都定义了一个类。问题是这些罐子中的一个已经过时了,有问题的课程缺少一个存在于一个罐子而不是另一个罐子里的方法。
所以,我收到的错误是找不到代码中使用的方法。我最终能够通过移除旧jar来解决这个问题,以便导入正确的jar。
许多人使用相同的代码(使用相同的两个,冲突的,导入的jar)并且没有这个问题。所以,他们一定是在导入最新的jar。
我的问题是:是什么原因导致我将一个罐子导入另一个罐子?什么逻辑决定哪个“被使用”?
谢谢!
答案 0 :(得分:6)
根据订单。第一个将被使用,第二个将开始引起问题。
确保不包含同一类的不同版本。你可能会遇到奇怪的错误。
答案 1 :(得分:2)
类路径确定顺序的方式与PATH确定如果您有多个具有相同名称的程序将运行的程序相同。
你可能会遇到奇怪的错误,但大多数时候有一个jar的多个版本不是问题(意味着它可能已经存在一段时间并且很难测试)
答案 2 :(得分:1)
看看你的CLASSPATH
。您的jar文件在CLASSPATH
上的显示顺序是什么?
如果您没有显式设置CLASSPATH
变量(或命令行参数,或者您的框架找到类),那么请设置它以使您想要的类更早出现。