有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

因此,我得到一个错误,代码中使用的方法找不到。我最终能够通过移除旧罐子来解决这个问题,这样它就导入了正确的罐子

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

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

谢谢


共 (3) 个答案

  1. # 1 楼答案

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

    如果没有显式地设置CLASSPATH变量(或命令行参数,或者框架如何查找类),那么请将其设置为使所需的类更早出现

  2. # 2 楼答案

    类路径决定顺序的方式与path决定如果有多个同名程序将运行哪个程序的方式相同

    你可能会遇到奇怪的bug,但大多数情况下,拥有多个版本的jar并不是问题(这意味着它可能已经存在了一段时间,而且很难测试)

  3. # 3 楼答案

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

    确保不要包含同一类的不同版本。因此,你可能会遇到奇怪的虫子