【发布时间】:2023-03-08 11:48:01
【问题描述】:
由于各种历史原因,我有一个旧的 java 应用程序,它与其他一些应用程序共享库 .JAR 的本地 lib/ 目录。在这个目录中是同一个库的多个版本副本,例如:
当我的 java 应用程序启动时,它如何决定加载哪个 .jar 文件?据我所知,CLASSPATH 只是设置为./lib/。但它使用 Tanuki 服务包装器启动,所以我不能 100% 确定这一点。
我无法删除这些现有 .JAR 中的任何一个,有没有办法准确指定我的应用将使用哪些 .JAR?
修补这个旧应用程序后,现在我收到 NoClassDefFoundError,我怀疑该应用程序正在加载与另一个库(BoneCP 和 slf4j)冲突的旧(或新)版本的 .JAR。
【问题讨论】:
-
在类路径中有不同版本的相同库总是不好的。要么只使用一个版本,然后您可以轻松删除另一个版本,或者同时使用两者(因为它们不包含完全相同的类),但您几乎肯定会遇到冲突,因为一个版本使用另一个库中的公共类。跨度>
标签: java