Jakarta ee javaee应用程序中的不同版本库

Jakarta ee javaee应用程序中的不同版本库,jakarta-ee,log4j,java,Jakarta Ee,Log4j,Java,我们有一个JavaEE应用程序,它使用log4j版本“x”进行日志记录。 在项目的增强过程中,我想添加另一个使用log4j版本“y”的第三方库。我认为我们需要将库的“x”和“y”版本都添加到类路径中 有谁能解释一下如何处理这种情况吗?你不应该在同一个类加载器中同时使用这两个类。您必须找到适用于两个库的版本 如果使用maven,可以通过以下方式排除可传递依赖项: <exclusions> <exclusion> <groupId>...&

我们有一个JavaEE应用程序,它使用log4j版本“x”进行日志记录。 在项目的增强过程中,我想添加另一个使用log4j版本“y”的第三方库。我认为我们需要将库的“x”和“y”版本都添加到类路径中


有谁能解释一下如何处理这种情况吗?

你不应该在同一个类加载器中同时使用这两个类。您必须找到适用于两个库的版本

如果使用maven,可以通过以下方式排除可传递依赖项:

<exclusions>
    <exclusion>
        <groupId>...</groupId>
        <artifactId>...</artifactId>
    </exclusion>
</exclusions>

...
...

在应用程序中使用同一个jar的两个不同版本是个坏主意。就log4j而言,所有1.x版本都是向后兼容的,只有2.x(仍处于测试阶段)不向后兼容。因此,只要jar“x”和jar“y”都属于1.x系列,您就可以只使用一个最新版本(1.2.17),而不会出现任何问题。

仅使用最新版本是否合乎逻辑?不确定,所有第三方库都应该向后兼容?