2013-11-18 3 views
0

Я использую этот код для сшивания изображений с JavaCV на Android:ExceptionInInitializerError в Stitcher с JavaCV для Android

public void ImageStitching() { 
    Stitcher stitcher = Stitcher.createDefault(false); 
    MatVector images = new MatVector(2); 
    images.put(0,cvLoadImage("sample1.png")); 
    images.put(1,cvLoadImage("sample2.png")); 

    IplImage result = new IplImage(null); 
    int status = stitcher.stitch(images,result); 

    if(status == Stitcher.OK) 
    { 
     cvSaveImage("result.png", result); 
    } 
} 

Но когда я исполню его, приложение падает и журнал показывает следующее сообщение об ошибке:

java.lang.ExceptionInInitializerError at ... 

и ошибка указывает на инициализацию Stitcher, первую строку моего кода. Если я попытаюсь сделать Stitcher stitcher;, он не сломается, но я ничего не могу сделать, поскольку стикер не инициализирован. Если я попытаюсь инициализировать его до null, он сбой с той же ошибкой.

Есть идеи по поводу проблемы? Я искал какое-то время, и все люди используют это и, похоже, работают.

ответ

0

Хорошо, я понял.

Проблема была в том, что библиотека opencv_stitching.so была только в папке armeabi, и мне нужно было в armeabi-v7a one. Не могу объявить строчку и инициализировать ее.

0

ExceptionInInitializerError

Сигналы, что неожиданное исключение произошло в статическом инициализаторе. ExceptionInInitializerError бросается, чтобы указать, что исключение произошло при оценке статического инициализатора или инициализатора для статической переменной.

Я хотел бы сделать что-то вроде

Stitcher stitcher; 
{ 
    try { 
     stitcher = Stitcher.createDefault(false); 
    } catch (Throwable t) { 
     t.printStackTrace(); 
     throw t; 
    } 
} 

и посмотреть, что происходит на самом деле - если вы не anready иметь эту информацию в , вызванное пунктом следа исключения.

PS Иногда ошибки возникают, когда класс инициализируется в неправильном потоке (например, в ранних версиях Android класс AsyncTask требовал явной инициализации основного потока в приложении, которое иначе загрузило бы этот класс в рабочий поток) ,

+0

Я сделал это, и я вижу: «Исключение Ljava/lang/UnsatisfiedLinkError; брошено при инициализации Lcom/googlecode/javacv/cpp/opencv_stitching;" и «Исключение Ljava/lang/ExceptionInInitializerError; выбрано при инициализации Lcom/googlecode/javacv/cpp/opencv_stitching $ Stitcher;" – serfe

+0

Кажется, проблема с библиотекой, но я не понимаю, что происходит. – serfe

+0

Есть ли зависимость от некоторой третьей библиотеки? – 18446744073709551615

Смежные вопросы