Подтвердить что ты не робот

Обнаружен и log4j-over-slf4j.jar И slf4j-log4j12.jar в пути к классу, выгружая StackOverflowError.

Я использовал 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 в качестве библиотек для решения проблем с журналом. Кто-нибудь сталкивался с одной и той же проблемой. Если так любезно напишите предложение или решение выйти из этого беспорядка. Заранее спасибо.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ссылка:


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

Ответ 3

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

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

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

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

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

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

Logback-ядро-1.0.0.jar

SLF4J-апи-1.6.4.jar

Reference Libraries

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

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

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

Ответ 4

Для gradle

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

Ответ 5

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

Ответ 6

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

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

  2. Щелкните правой кнопкой мыши файл JAR- файла импорта и выберите "Исключить зависимость" enter image description here.

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

enter image description here 4. Запустите maven clean и запустите ваш проект. Удачи!

Ответ 7

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

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

Ответ 8

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

enter image description here

найти их в google

нет необходимости log4j для xuggle