Détecte à la fois les fichiers log4j-over-slf4j.jar et slf4j-log4j12.jar sur le chemin de classe, en préemptant StackOverflowError.

J’ai utilisé la xuggle library dans mon projet pour xuggle library la vidéo de mp4 to flv . J’ai également utilisé des slf4j libraries pour prendre en charge la fin de la journalisation.

 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 Ssortingng inputFilename = "E:\\VIDEO\\Facebook.mp4"; private static final Ssortingng outputFilename = "E:\\VIDEO\\Facebook.flv"; public static void main(Ssortingng[] 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) ; } } 

Ici je reçois une erreur

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

J’ai utilisé les deux fichiers jar en tant que bibliothèques pour résoudre des problèmes de journalisation. Quelqu’un a-t-il fait face au même problème. Si vous écrivez avec bonté une suggestion ou une solution pour sortir de ce pésortingn. Merci d’avance.

Vous devez donc exclure les dépendances de conflit. Essaye ça:

   org.slf4j slf4j-log4j12   log4j log4j   

Cela a résolu le même problème avec slf4j et Dozer.

J’ai la solution

téléchargez Xuggler 5.4 ici

et quelques bocaux supplémentaires pour que ça marche …

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

Bibliothèques de référence

Vous pouvez vérifier quelles dépendances xuggler a besoin d’ici:

Ajoutez ces jars et xuggle-xuggler-5.4.jar au chemin de génération de votre projet et il est prêt.

** les numéros de version peuvent changer

Vous avez demandé s’il était possible de modifier la vérification de dépendance circulaire dans ces classes slf4j.

La réponse simple est non.

  • Il est inconditionnel … tel que mis en œuvre.
  • Il est implémenté dans un bloc d’initialisation static … vous ne pouvez donc pas remplacer l’implémentation et vous ne pouvez pas l’empêcher de se produire.

La seule façon de changer cela serait de télécharger le code source, de modifier les classes principales pour les “réparer”, de les construire et de les utiliser. C’est probablement une mauvaise idée (en général) et probablement pas de solution dans ce cas; c’est-à-dire que vous risquez de déclencher le problème de dépassement de capacité de la stack que le message vous avertit.

Référence:

  • Le code source

La vraie solution (comme vous l’avez identifié dans votre réponse) est d’utiliser les bons JAR. Je crois comprendre que la circularité détectée est réelle et potentiellement problématique… et inutile.

essayez de charger tous ces fichiers jar

entrer la description de l'image ici

les rechercher sur google

pas besoin de log4j pour xuggle

Pour gradle

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