java 在类路径上检测到log4j-over-slf4j.jar和slf4j-log4j12.jar,抢占StackOverflowError

qpgpyjmq  于 2022-12-25  发布在  Java
关注(0)|答案(7)|浏览(166)

我在我的项目中使用了xuggle library来转换来自mp4 to flv的视频。我也使用了slf4j libraries来支持日志记录端。

import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.IMediaViewer;
import com.xuggle.mediatool.IMediaWriter;
import com.xuggle.mediatool.ToolFactory;

public class TranscodingExample {

    private static final String inputFilename = "E:\\VIDEO\\Facebook.mp4";
    private static final String outputFilename = "E:\\VIDEO\\Facebook.flv";

    public static void main(String[] args) {

        // create a media reader
        IMediaReader mediaReader = 
               ToolFactory.makeReader(inputFilename);
        
        // create a media writer
        IMediaWriter mediaWriter = 
               ToolFactory.makeWriter(outputFilename, mediaReader);

        // add a writer to the reader, to create the output file
        mediaReader.addListener(mediaWriter);
        
        // create a media viewer with stats enabled
        IMediaViewer mediaViewer = ToolFactory.makeViewer(true);
        
        // add a viewer to the reader, to see the decoded media
        mediaReader.addListener(mediaViewer);

        // read and decode packets from the source file and
        // and dispatch decoded audio and video to the writer
        while (mediaReader.readPacket() == null) ;

    }

}

我在这里得到一个错误

"Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError.".

为了解决日志问题,我使用了这两个jar文件作为库。
如何解决这个问题呢?

qmelpv7a

qmelpv7a1#

所以你必须排除冲突的依赖关系。试试这个:

<exclusions>
  <exclusion> 
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
  </exclusion>
  <exclusion> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions>

这解决了slf4j和推土机的相同问题。

hkmswyz6

hkmswyz62#

遇到了类似的错误,这是我如何解决它:
1.访问Netbeans IDE 8.2上的“项目资源管理器”视图。在“依赖关系”下继续您的项目,将光标悬停在log4j-over-slf4j.jar上以查看间接导入了哪些依赖关系,如下所示。x1c 0d1x
1.右键单击导入jar文件,然后选择“排除依赖关系

1.要确认,请打开您的pom.xml文件,您将注意到如下所示的exclusion元素。


4.启动maven clean安装并运行您的项目,祝您好运!

jfewjypa

jfewjypa3#

对于SBT:第一个月

j0pj023g

j0pj023g4#

我有办法了
在此下载Xuggler 5.4
再加些jar让它工作。
commons-cli-1.1.jar
commons-lang-2.1.jar
logback-classic-1.0.0.jar
logback-core-1.0.0.jar
slf4j-api-1.6.4.jar

您可以从这里查看xuggle需要哪些依赖项:
将这个jar和xuggle-xuggler-5.4.jar添加到项目的构建路径中,就可以了。

**版本号可能会更改

liwlm1x9

liwlm1x95#

对于Gradle

compile('org.xxx:xxx:1.0-SNAPSHOT'){
    exclude module: 'log4j'
    exclude module: 'slf4j-log4j12'
}
sauutmhj

sauutmhj6#

上述SBT解决方案对我不起作用。对我起作用的是排除slf4j-log4j12

//dependencies with exclusions
libraryDependencies ++= Seq(
    //depencies
).map(_.exclude("org.slf4j","slf4j-log4j12"))
kmynzznz

kmynzznz7#

您需要排除log4j-over-slf4j

<dependency>
    ....
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

相关问题