检测到类path上的log4j-over-slf4j.jar和slf4j-log4j12.jar,抢占StackOverflowError。
我在我的项目中使用了xuggle library
来将video从mp4 to flv
转码mp4 to flv
。 我也使用slf4j libraries
来支持日志logging结束。
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文件作为库来解决日志logging问题。 是否有人面临同样的问题。如果这么好心地写出build议或解决scheme来摆脱这个混乱。 提前致谢。
所以你必须排除冲突依赖。 尝试这个:
<exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions>
这解决了与slf4j和Dozer相同的问题。
我得到了解决scheme
在这里下载Xuggler 5.4
和一些更多的jar子,使其工作…
公共-CLI-1.1.jar
公地郎2.1.jar
的logback经典-1.0.0.jar
的logback核-1.0.0.jar
SLF4J-API-1.6.4.jar
你可以从这里检查xuggler需要的依赖:
将这个jar和xuggle-xuggler-5.4.jar添加到您的项目的构buildpath中,并准备就绪。
**版本号可能会更改
你问是否可以改变这些slf4j类中的循环依赖检查。
简单回答是不。
- 这是无条件的…被执行。
- 它是在一个
static
初始化块中实现的…所以你不能覆盖实现,而且你不能停止它的发生。
所以改变这个的唯一方法是下载源代码,修改核心类来“修复”它们,构build和使用它们。 这可能是一个坏主意(一般),在这种情况下可能不是解决办法; 即您可能会触发消息警告的堆栈溢出问题。
参考:
- 源代码 。
真正的解决scheme(正如你在Answer中所确定的)是使用正确的JAR。 我的理解是,检测到的循环是真实的,可能是有问题的…而且是不必要的。
尝试加载所有这些jar文件
search他们在谷歌
xuggle
不需要log4j