Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Onejar maven插件,用于设置jar加载顺序_Maven_Classloader_Slf4j_Logback_Onejar - Fatal编程技术网

Onejar maven插件,用于设置jar加载顺序

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.

我一直在使用库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中的调试模式))只需切换依赖项顺序即可解决此问题

情况如何:

    <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