java - 计算目录中 MP4 文件的总持续时间时出现 SLF4J 问题

标签 java maven jar slf4j

主要目标:

我的主要目标是从目录中获取所有 .mp4 文件的持续时间。所以,我用谷歌搜索并找到了 this qeustion其中一个答案提到了this完整代码。

导入错误:

当我在我的代码中获取必要的部分时,它在以下行中显示错误:

import com.xuggle.xuggler.IContainer;

之后,我从 here 下载了 Xuggler我从here得到的.然后我得到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at com.xuggle.ferry.JNILibrary.<clinit>(JNILibrary.java:42)
    at com.xuggle.ferry.FerryJNI.<clinit>(FerryJNI.java:14)
    at com.xuggle.ferry.Ferry.<clinit>(Ferry.java:25)
    at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19)
    at com.xuggle.xuggler.IContainer.<clinit>(IContainer.java:1622)
    at videotimecalcualtioncoursera.MainFrame.calculateTime(MainFrame.java:116)
    at videotimecalcualtioncoursera.MainFrame.jButtonCalculateActionPerformed(MainFrame.java:284)
    at videotimecalcualtioncoursera.MainFrame.access$000(MainFrame.java:33)
    at videotimecalcualtioncoursera.MainFrame$4.actionPerformed(MainFrame.java:204)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 45 more

解决“java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory”异常:

为了寻求上述异常的解决方案,我找到了this question并尝试了所有三种解决方案,但没有成功。出现以下异常:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006ee76520, pid=10112, tid=3292
#
# JRE version: Java(TM) SE Runtime Environment (8.0_25-b18) (build 1.8.0_25-b18)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.25-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [xuggle6026878147022032067.dll+0x736520]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# H:\Dropbox\JavaProjects\VideoTimeCalcualtionCoursera\hs_err_pid10112.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Java Result: 1

解决异常“SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder":

寻求它的解决方案,我得到了this question除了删除错误流中的前三行外,接受的答案什么也做不了。

我当时尝试过的:

我尝试在我的项目中添加以下 .jar 文件:

  1. xuggle-xuggler-5.4.jar
  2. slf4j-api-1.6.4.jar/slf4j-api-1.7.12.jar
  3. slf4j-simple-1.7.6.jar/slf4j-simple-1.7.12.jar
  4. log4j-1.2.16.jar
  5. logback-classic-1.0.0.jar
  6. logback-core-1.0.6.jar
  7. slf4j-jdk14-1.7.12.jar
  8. slf4j-log4j12-1.7.12.jar

文件 - hs_err_pid10112.log:

可以看到错误文件here ,我无法添加它,因为添加它会超出字符数限制。

如何解决这个问题?

备注:

我已经遍历了以下问题:

  1. using Logback with slf4j [on hold]
  2. Error with Slf4j and classpath
  3. Given I'm stuck with SLF4J and java.util.Logging, what is optimal solution?
  4. How do I get a list of configured loggers using Jboss LogManager with SLF4J?
  5. How to write event logs into xml files with SLF4J or Logback?
  6. OpenJPA logging with slf4j on WebSphere
  7. Tomcat Logging With Slf4j and Log4j

最佳答案

您通常需要三个功能部分:

  1. 程序使用的API(slf4j-api)
  2. 使记录器实现适应 SLF4J API(例如 slf4j-log4j12)的桥接代码必须与您使用的记录器相匹配。
  3. 记录器实现(例如 log4j)

一些 jar 覆盖不止一个部分,例如logback 涵盖第 2 和第 3 部分,因为它本身实现了 slf4j,或者如果您使用 java util 日志记录,则不需要显式添加第 3 部分(它在 Java 运行时中)

您还必须使用 slf4j 组件的匹配版本,例如,不要将 slf4j-api-1.6.4.jar 与 slf4j-log4j12-1.7.12.jar 混合使用。

看看 slf4j documentation了解详情。

关于java - 计算目录中 MP4 文件的总持续时间时出现 SLF4J 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318712/

相关文章:

java - Admob 没有来自广告服务器的填充 - 无法加载广告 : 3

Java:在单独的进程中运行 Callable

java - onClick 事件不工作 Android

java - Maven 插件签署特定文件

java - Maven 全新安装无法在项目上执行目标

java - jar 抛出 NoClassDefFoundError

java - 如何在 Jmeter 变量中存储数组值?

java - 在 Eclipse 中将外部 jar 添加为单独的文件或用户定义的库的首选方法?

java - 运行 java -jar 时包含外部 jar

java - Maven Launch4j 插件 - 如何配置以排除 .exe 使用的 jar?