Обнаружен и 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 в качестве библиотек для решения проблем с журналом.
Кто-нибудь сталкивался с одной и той же проблемой. Если так любезно напишите предложение или решение выйти из этого беспорядка.
Заранее спасибо.
Ответы
Ответ 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
Обнаружил похожую ошибку, вот как я ее решил:
-
Доступ к представлению обозревателя проектов в среде IDE Netbeans 8.2. Перейдите к своему проекту в разделе Зависимости, наведите курсор на файл log4j-over-slf4j.jar, чтобы увидеть, какие зависимости были импортированы косвенным образом, как показано ниже. ![enter image description here]()
-
Щелкните правой кнопкой мыши файл JAR- файла импорта и выберите "Исключить зависимость"
.
- Чтобы подтвердить, откройте файл pom.xml, вы заметите элемент исключения, как показано ниже.
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