我一直在使用库 apache-log4j-extras 进行日志记录。它包含类 org.apache.log4j.Logger 。
现在我必须引用一些使用 logback 的第三方库,并且其依赖项 log4j-over-slf4j (jar)。不幸的是,后面的jar还包含类 org.apache.log4j.Logger 。
看起来后一类是onejar类加载器首选...
我不需要 logback 和 log4j-over-slf4j 。只想从 apache-log4j-extras 返回 org.apache.log4j.Logger 。我对Onejar-maven-plugin有什么选择?
编辑: IDEA中的调试模式似乎存在问题,而不是onejar。但问题仍然存在:我如何确保用Onejar加载需要的类?
EDIT2:例如在C#中,可以使用“extern alias”功能轻松解决。
答案 0 :(得分:0)
看起来(用于IDEA中的调试模式)只需切换依赖项顺序即可解决问题。
它是怎么回事:
<dependency>
<groupId>my.naughty.thirdparty</groupId>
<artifactId>thirdparty-ref-log4j-over-slf4j</artifactId>
<version>0.50</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>apache-log4j-extras</artifactId>
<version>1.1</version>
</dependency>
更改为:
<dependency>
<groupId>log4j</groupId>
<artifactId>apache-log4j-extras</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>my.naughty.thirdparty</groupId>
<artifactId>thirdparty-ref-log4j-over-slf4j</artifactId>
<version>0.50</version>
</dependency>
但我当然不能认为它是一个强大的解决方案,特别是对于Onejar。
答案 1 :(得分:0)
为什么不排除它?
<dependency>
<groupId>my.naughty.thirdparty</groupId>
<artifactId>thirdparty-with-log4j-over-slf4j</artifactId>
<version>${thirdparty.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>