Обнаружены как log4j-over-slf4j.jar, так и slf4j-log4j12.jar в пути к классам, исключая StackruError.

Я использовал 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 StackruError.". 

Я использовал оба jar-файла в качестве библиотек для решения проблем с журналированием. Кто-нибудь сталкивался с такой же проблемой. Если так любезно, напишите предложение или решение, чтобы выйти из этого беспорядка. Заранее спасибо.

9 ответов

Решение

Таким образом, вы должны исключить конфликтные зависимости. Попробуй это:

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

Это решило ту же проблему с slf4j и Dozer.

Обнаружил похожую ошибку, вот как я ее решил:

  1. Доступ к представлению обозревателя проектов в среде IDE Netbeans 8.2. Перейдите к своему проекту в разделе Зависимости, наведите курсор на файл log4j-over-slf4j.jar, чтобы увидеть, какие зависимости были импортированы косвенно, как показано ниже.

  2. Щелкните правой кнопкой мыши файл jar импорта и выберите "Исключить зависимость".

  3. Чтобы подтвердить, откройте файл pom.xml, вы заметите элемент исключения, как показано ниже.

4. Начните установку maven clean и запустите ваш проект. Удачи!

И для SBT: excludeDependencies += "log4j" % "log4j"

Я получил решение

скачать Xuggler 5.4 здесь

и еще несколько банок, чтобы заставить его работать...

Обще-кли-1.1.jar

Обще-Ланг-2.1.jar

Logback-классический 1.0.0.jar

Logback-ядро-1.0.0.jar

SLF4J-апи-1.6.4.jar

Справочные библиотеки

Вы можете проверить, какие зависимости нужны xuggler отсюда:

Добавьте этот jars и xuggle-xuggler-5.4.jar к пути сборки вашего проекта, и он готов.

** номера версий могут измениться

Для gradle

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

Вы спросили, возможно ли изменить циклическую проверку зависимостей в этих классах slf4j.

Простой ответ - нет.

  • Это безоговорочно... как реализовано.
  • Это реализовано в static блок инициализатора... так что вы не можете переопределить реализацию, и вы не можете остановить это.

Поэтому единственный способ изменить это - загрузить исходный код, изменить базовые классы, чтобы "исправить" их, собрать и использовать их. Это, вероятно, плохая идея (в общем) и, вероятно, не решение в этом случае; то есть вы рискуете вызвать проблему переполнения стека, о которой предупреждает сообщение.

Ссылка:


Реальное решение (как вы указали в своем ответе) заключается в использовании правильных файлов JAR. Насколько я понимаю, обнаруженная цикличность реальна и потенциально проблематична... и не нужна.

Попробуйте загрузить все эти файлы JAR

введите описание изображения здесь

искать их в Google

не нужно log4j за xuggle

Пришлось исключить log4j-over-slf4j

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

Решение SBT, указанное выше, не работает для меня. То, что сработало для меня, исключает slf4j-log4j12

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

Другие вопросы по тегам