Onejar maven插件,用于设置jar加载顺序
我一直在使用库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插件有哪些选择 编辑:这似乎是IDEA中调试模式的问题,而不是onejar的问题。然而,问题仍然是相关的:如何确保用Onejar加载Required类 EDIT2:例如,在C#中,可以使用“”功能轻松解决此问题。看起来像(对于IDEA中的调试模式))只需切换依赖项顺序即可解决此问题 情况如何:Onejar maven插件,用于设置jar加载顺序,maven,classloader,slf4j,logback,onejar,Maven,Classloader,Slf4j,Logback,Onejar,我一直在使用库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.
<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>
我的第三方
第三方-ref-log4j-over-slf4j
0.50
log4j
apache-log4j-extras
1.1
改为:
<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>
log4j
apache-log4j-extras
1.1
我的第三方
第三方-ref-log4j-over-slf4j
0.50
当然,我不能认为这是一个稳妥的解决方案,尤其是对于Onjar。你为什么不排除它?
<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>
我的第三方
第三方-with-log4j-over-slf4j
${thirdparty.version}
org.slf4j
log4j-over-slf4j