Обнаружены как 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.
Обнаружил похожую ошибку, вот как я ее решил:
Доступ к представлению обозревателя проектов в среде IDE Netbeans 8.2. Перейдите к своему проекту в разделе Зависимости, наведите курсор на файл log4j-over-slf4j.jar, чтобы увидеть, какие зависимости были импортированы косвенно, как показано ниже.
Щелкните правой кнопкой мыши файл jar импорта и выберите "Исключить зависимость".
- Чтобы подтвердить, откройте файл pom.xml, вы заметите элемент исключения, как показано ниже.
4. Начните установку maven clean и запустите ваш проект. Удачи!
Я получил решение
скачать 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"))