ExceptionInInitializerError в цесте с javacv для андроида
-
26-12-2019 - |
Вопрос
Я использую этот код для сшивания изображений с 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 ...
.
и ошибка указывает на инициализацию Shower, первую строку моего кода.Если я попытаюсь сделать Stitcher stitcher;
, он не ломается, но я не могу ничего сделать, так как sthower не инициализируется.Если я попытаюсь инициализировать его на null
, он сбивает с собой ту же ошибку.
Любое представление о проблеме?Я искал некоторое время, и все люди используют это, и кажется, работает.
Решение 2
Хорошо, я получил это.
Проблема заключалась в том, что библиотека OpenC_Stitching.so была только в папке Armeabi, и мне нужно в ARMEABI-V7A One.Не я могу объявить шлюш и инициализировать его.
Другие советы
ExceptionInInitializerError
сигналы, что неожиданное исключение произошло в статическом инициаторе.ExceptionInInitializerError брошен, чтобы указать, что исключение произошло во время оценки статического инициализатора или инициализатора для статической переменной.
Я бы сделал что-то вроде
Stitcher stitcher;
{
try {
stitcher = Stitcher.createDefault(false);
} catch (Throwable t) {
t.printStackTrace();
throw t;
}
}
.
И посмотрите, что действительно происходит - если вы не у вас нет этой информации в , вызванные пунктом Trace исключения.
ps Иногда ошибки случаются, когда класс инициализирован на неправильной поток (например, в ранних версиях Android класса Asynctask требуется явную инициализацию в основной ните в приложении, которое в противном случае загружается бы этот класс на рабочей нити).