4

在 Java 中,我最近遇到了一个案例,我得到了两个不同的 jar,每个 jar 都定义了一个类。问题是这些 jar 中的一个已过时,并且所讨论的类缺少一个存在于一个 jar 而不是另一个 jar 中的方法。

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

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

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

谢谢!

4

3 回答 3

6

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

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

于 2012-04-25T17:14:15.773 回答
2

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

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

于 2012-04-25T17:18:59.790 回答
1

看看你的CLASSPATH. 你的 jar 文件出现在什么顺序CLASSPATH

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

于 2012-04-25T17:18:46.460 回答