Détecté à la fois log4j-over-slf4j.jar ET slf4j-log4j12.jar sur le chemin de classe, la préemption StackOverflowError.
J'ai utilisé xuggle library
dans mon projet de trans code de la vidéo à partir de mp4 to flv
.
J'ai utilisé slf4j libraries
également à l'appui de la journalisation fin.
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) ;
}
}
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 que les bibliothèques afin de résoudre la journalisation des problèmes.
Est-ce une quelconque face au même problème.Si oui, veuillez écrire suggestion ou une solution pour sortir de ce pétrin.
Merci à l'avance.
- Si vous êtes à l'aide de log4j, vous pouvez simplement les exclure de la
log4j-over-slf4j.jar
. En théorie, l'utilisation de log4j et de piratage de code de la route le log4j appels à slf4j peut conduire à la récursivité et, partant, le contrôle strict.
Vous devez vous connecter pour publier un commentaire.
De sorte que vous devez exclure les conflits de dépendances. Essayez ceci:
Cela a résolu le même problème avec slf4j et Bulldozer.
Vous demande si il est possible de modifier la circulaire de la vérification de la dépendance dans les slf4j classes.
La réponse simple est non.
static
initialiseur de bloc ... donc vous ne pouvez pas remplacer la mise en œuvre, et vous ne pouvez pas arrêter ce qui se passe.De sorte que le seul moyen de changer ce serait pour télécharger le code source, modifier le cours de base, de les "fixer", à construire et à utiliser. C'est probablement une mauvaise idée (en général) et probablement pas de solution dans ce cas; il risque de déclencher le dépassement de pile problème que le message d'alerte sur les.
Référence:
La vraie solution (que vous avez identifié dans votre Réponse) est d'utiliser le droit des Bocaux. Ma compréhension est que la circularité qui a été détectée est réel et potentiellement problématique ... et inutile.
J'ai eu la solution
télécharger Xuggler 5.4 ici
et un peu plus de pot pour le faire fonctionner...
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
Vous pouvez vérifier les dépendances de xuggler besoins à partir d'ici:
Ajouter cette bocaux et xuggle-xuggler-5.4.jar pour votre projet de construction de chemin et il est prêt.
**les numéros de version peuvent changer
Pour gradle
Rencontré une erreur similaire, ce comment je l'ai résolu:
Projet d'accès à l'affichage de l'explorateur sur Netbeans IDE 8.2. Procéder à votre projet en vertu de Dépendances placez le curseur sur la log4j-over-slf4j.jar pour afficher le qui qui dépendances ont indirectement importées comme indiqué ci-dessous.
Cliquez-droit sur une importation de fichier jar et sélectionnez Exclure la Dépendance
4. Initier maven clean installer et exécuter votre projet. Bonne chance!
Et pour SBT :
excludeDependencies += "log4j" % "log4j"
SBT solution indiquée ci-dessus ne fonctionne pas pour moi. Ce qui a fonctionné pour moi, c'est l'exclusion de
slf4j-log4j12
HTML: