JavaCV中的初始化错误例外

JavaCV中的初始化错误例外,java,opencv,javacv,Java,Opencv,Javacv,我试图使用JavaCV,但我得到了例外的初始化错误 以下是日志: Exception in thread "Thread-2" java.lang.ExceptionInInitializerError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.googlecode.javacpp.Loader.load(Loader.java:

我试图使用JavaCV,但我得到了例外的初始化错误

以下是日志:

Exception in thread "Thread-2" java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:553)
    at com.googlecode.javacpp.Loader.load(Loader.java:532)
    at com.googlecode.javacv.cpp.opencv_core$CvArr.<clinit>(opencv_core.java:156)
    at com.googlecode.javacv.VideoInputFrameGrabber.grab(VideoInputFrameGrabber.java:163)
    at com.sudev.robo.Robot.run(Robot.java:30)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Can't overwrite cause
    at java.lang.Throwable.initCause(Throwable.java:456)
    at com.googlecode.javacpp.Loader.load(Loader.java:581)
    at com.googlecode.javacpp.Loader.load(Loader.java:532)
    at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:134)
    ... 8 more

对于那些在使用JavaCV并尝试加载相机时发现此错误的用户

我发现从下面的文件导入所有文件解决了我的问题


哪个类的初始值设定项引发错误?我们需要查看它的代码。嗨,Chrylis,我也添加了代码,谢谢,但这不是我们需要的类。异常是被抛出到一个类中,该类由opencv_core$CvArr的类初始值设定项而不是构造函数反射加载,我们需要看看它是什么类。我不熟悉OpenCV,所以我不知道它是从某个配置文件加载您的类,还是从它自己的内部类加载。将调试器设置为在ExceptionInInitializerError时中断,并查看Class.forName的参数。它是JavaCV jars的一部分,不是我创建的类。我只创建了一个类,并与您分享了这一点。在您找到传递给forName的类名之前,我们无法做任何其他事情。
import static com.googlecode.javacv.cpp.opencv_core.cvFlip;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.VideoInputFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;

public class Robot implements Runnable {
    IplImage image;
    CanvasFrame canvas = new CanvasFrame("Web Cam");

    public Robot() {
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void run() {
        FrameGrabber grabber = new VideoInputFrameGrabber(0);
        // 1 for next camera
        int i = 0;
        try {
            grabber.start();
            IplImage img = null;
            while (true) {
                 long sleepTime= (long)((1000 / 60));
                    img = grabber.grab();
                if (img != null) {
                    cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
                    cvSaveImage((i++) + "-aa.jpg", img); // show image on window
                    canvas.showImage(img);
                } 
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Robot gs = new Robot();
        Thread th = new Thread(gs);
        th.start();
    }
}