J'ai utilisé xuggle library
dans mon projet pour coder la vidéo à partir de mp4 to flv
. J'ai utilisé slf4j libraries
également pour prendre en charge 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 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 en tant que bibliothèques afin de résoudre les problèmes de journalisation . Quelqu'un a-t-il été confronté au même problème.Si vous avez la bonté d'écrire une suggestion ou une solution pour sortir de ce désordre . Merci d'avance.
Vous devez donc exclure les dépendances de conflit. Essaye ça:
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
Cela a résolu le même problème avec slf4j et dozer.
Vous avez demandé s'il était possible de modifier la vérification de la dépendance circulaire dans ces classes slf4j.
La réponse simple est non.
static
... afin que vous ne puissiez pas écraser l'implémentation et que vous ne puissiez pas l'arrêter.La seule façon de changer cela serait donc de télécharger le code source, de modifier les classes principales pour les "réparer", les construire et les utiliser. C'est probablement une mauvaise idée (en général) et probablement pas une solution dans ce cas; vous risquez de provoquer le problème de débordement de pile que le message met en garde.
Référence:
La vraie solution (comme vous l'avez identifiée dans votre réponse) consiste à utiliser les bons fichiers JAR. D'après ce que je comprends, la circularité détectée est réelle et potentiellement problématique ... et inutile.
Pour le grade
compile('org.xxx:xxx:1.0-SNAPSHOT'){
exclude module: 'log4j'
exclude module: 'slf4j-log4j12'
}
Et pour SBT: excludeDependencies += "log4j" % "log4j"
J'ai la solution
téléchargez Xuggler 5.4 ici
et un peu plus de bocal 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 dont xuggler a besoin à partir d'ici:
Ajoutez ces fichiers jar et xuggle-xuggler-5.4.jar au chemin de génération de votre projet, qui est prêt.
** les numéros de version peuvent changer
J'ai rencontré une erreur similaire, voici comment je l'ai résolue:
Accéder à la vue Explorateur de projet sur Netbeans IDE 8.2. Passez à votre projet sous Dépendances, placez le curseur de la souris sur le fichier log4j-over-slf4j.jar pour afficher celles que les dépendances ont indirectement importées, comme indiqué ci-dessous.
Cliquez avec le bouton droit sur un fichier JAR d'importation et sélectionnez Exclure la dépendance
4. Lancez maven clean install et exécutez votre projet. Bonne chance!
La solution SBT indiquée ci-dessus n'a pas fonctionné pour moi. Ce qui a fonctionné pour moi, c'est d'exclure slf4j-log4j12
//dependencies with exclusions
libraryDependencies ++= Seq(
//depencies
).map(_.exclude("org.slf4j","slf4j-log4j12"))