Java NoClassDefFoundError异常

Java NoClassDefFoundError异常,java,Java,我在使用外部jar文件时遇到了麻烦,即使我将它正确地放在类路径中 我的外部jar文件在D:驱动器中,我的类路径是“C:\Program Files\Java\jdk1.7.0\u 51\bin;D:\webcam-capture-0.3.10-RC6.jar;C:\Program Files\Java\jdk1.7.0\u 51\lib;”,请帮助我解决这个问题。下面是我的代码: import com.github.sarxos.webcam.Webcam; import javax.swing

我在使用外部jar文件时遇到了麻烦,即使我将它正确地放在类路径中

我的外部jar文件在
D:
驱动器中,我的类路径是
“C:\Program Files\Java\jdk1.7.0\u 51\bin;D:\webcam-capture-0.3.10-RC6.jar;C:\Program Files\Java\jdk1.7.0\u 51\lib;”
,请帮助我解决这个问题。下面是我的代码:

import com.github.sarxos.webcam.Webcam;
import javax.swing.JOptionPane;

public class DetectWebcamExample  {

    public static void main(String[] args) {
        try {
            Webcam webcam = Webcam.getDefault();
            if (webcam != null) {
                    System.out.println("Webcam: " + webcam.getName());
            } else {
                    System.out.println("No webcam detected");
            }

        } catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }            
}
例外细节是

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at com.github.sarxos.webcam.Webcam.<clinit>(Webcam.java:40)
    at test.Test.main(Test.java:20)
        Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 2 more
Java Result: 1
线程“main”java.lang.NoClassDefFoundError中的异常:org/slf4j/LoggerFactory 位于com.github.sarxos.webcam.webcam.(webcam.java:40) 位于test.test.main(test.java:20) 原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory 在java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在java.net.URLClassLoader$1.run(URLClassLoader.java:355) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:354) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:425) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 还有两个 Java结果:1 我用“C:\Program Files\Java\jdk1.7.0_51\bin;”和类路径“D:\webcam-capture-0.3.10-RC6.jar;”修改了路径,但异常仍然存在


如何解决此问题?

Java找到了
com.github.sarxos.webcam.webcam
,因此您已成功将该JAR添加到类路径中

现在发生的事情是,
Webcam
正在尝试使用
log4j
类,而该类不在类路径上

这是常见的-包A需要包B;B包需要C包;您可以花一段时间寻找jar来满足依赖链

在本例中,您将需要两个log4j jar-log4japi和一个可选的log4j实现jar。有关详细信息,请参阅log4j网页


如果对依赖性JAR的搜索开始变得愚蠢,请考虑使用Maven或IVY来处理您的依赖项。

它找不到什么类?JDK bin和JDK LIB文件夹不应该在类路径中。将e.printStackTrace()添加到catch块(或者更好,完全删除它),然后粘贴异常的完整堆栈跟踪。我同意jdk文件夹不应该在类路径中,通常也不应该在jdk JAR中。但是如果您确实需要类路径中的多个条目,请不要在分隔后放置空格;在Windows上或:在Unix上。