Java 如何导入/导出包含旧版本外部JAR的JAR?

Java 如何导入/导出包含旧版本外部JAR的JAR?,java,log4j,Java,Log4j,我有一个项目“A”,其中包括log4j.jar(log4j版本1.2)。 我将这个项目“A”导出为A.jar 当有人更新了log4J版本(1.2.17)并导入了我的A项目(importa.jar)时,他会得到类notfound错误(因为log4J不是同一版本) 有没有一种方法可以解决这个问题,而不必创建新版本的a.jar(使用更新的log4j-jar)?听起来您遇到了一个经典的依赖关系管理问题 长期的解决方案是使用为此设计的构建工具——在java中,这可能是开始的最好的地方,但也可以看作是一个更

我有一个项目“A”,其中包括
log4j.jar
(log4j版本1.2)。 我将这个项目“A”导出为
A.jar

当有人更新了log4J版本(1.2.17)并导入了我的A项目(importa.jar)时,他会得到类notfound错误(因为log4J不是同一版本)


有没有一种方法可以解决这个问题,而不必创建新版本的
a.jar
(使用更新的log4j-jar)?

听起来您遇到了一个经典的依赖关系管理问题

长期的解决方案是使用为此设计的构建工具——在java中,这可能是开始的最好的地方,但也可以看作是一个更为单一的工具。


使用这两种方法之一,您可以指定所依赖的库的版本(以及在构建/运行时生命周期中的时间),并在必要时从全局存储库获取它们。

project a和从属项目如何处理它们的依赖关系?如果您使用的是Maven或Gradle,则可以(分别)排除依赖项。如果您是从Eclipse导出,这个问题可能会有所帮助,谢谢。所以我将使用maven来构建A.jar,其他人(使用我的A.jar的人)也需要使用maven吗?理想情况下两者都需要。您希望您的构建指定它需要
log4j
,而不是直接绑定。然后另一个项目可以直接拉取您的JAR,或者如果他们使用Maven,它将从POM中知道它需要
log4j
,因此他们可以指定在项目中包括(或排除)哪些版本,以整理未找到的类错误。