在我们的 WAR 中,我们有三个包含类的 JAR org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
。一个 jar 的版本比其他的旧。
这不会在我们的开发或暂存环境中导致问题,但是在我们的生产环境中,加载了来自不同 JAR 的类的版本,导致我们java.lang.NoSuchMethodError
启动时出现问题。我采用了在生产中失败的完全相同的 WAR,并在阶段和开发中成功运行它。
在 Java 中,是什么决定了选择哪个 jar 版本的类?是什么导致一个盒子与另一个盒子不同?