2011-02-10 2 views
1

Я перепробовал этот вопрос, потому что я не уверен, правильно ли я спросил его раньше. :) Я работаю над приложением, которое включает распознавание лиц , камера загружается нормально. внутри обратного вызова кадра предварительного просмотра я создаю экземпляр объекта faceview (этот класс обрабатывает обнаружение). этот класс может обнаруживать только лица в растровом изображении, но изображение из обратного вызова - это YuvImage. я сжал изображение в jpeg, а затем вызвал метод для преобразования этого jpeg в растровое изображение, поэтому обнаружение будет работать.NoClassDefFoundError: android.graphics.YuvImage (компилируется, но не запускается)

Проблема, с которой я сталкиваюсь, заключается в том, что затмение говорит о том, что существует классное исключение, связанное с YuvImage, которое я использую. Я загрузил api8, частью которого является yuvimage. ошибок в исходном коде нет, и он компилируется нормально. есть ли причина, по которой ecilipse не может загрузить класс yuvimage? вот фрагмент, спасибо.

'Код'

BitmapFactory.Options bfo = new BitmapFactory.Options(); 
bfo.inPreferredConfig = Bitmap.Config.RGB_565; 
Rect rectangle = new Rect(0, 0, width, height); 
ByteArrayOutputStream bos = new ByteArrayOutputStream(imageData.length); 
try{ 
    img = new YuvImage(imageData,ImageFormat.NV21,width,height,null); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 
img.compressToJpeg(rectangle, 100, bos); 
byte[] array = bos.toByteArray(); 


sourceImage = BitmapFactory.decodeByteArray(array, 0, array.length); 

Исключение трассировки:

02-10 11:53:07.298: ERROR/dalvikvm(2364): Could not find class 'android.graphics.YuvImage', referenced from method com.tecmark.FaceView.<init> 
02-10 11:53:07.468: ERROR/AndroidRuntime(2364): Uncaught handler: thread main exiting due to uncaught exception 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364): java.lang.NoClassDefFoundError: android.graphics.YuvImage 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.tecmark.FaceView.<init>(FaceView.java:60) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.tecmark.cameraView$1.onPreviewFrame(cameraView.java:111) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.hardware.Camera$EventHandler.handleMessage(Camera.java:395) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.os.Looper.loop(Looper.java:123) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at dalvik.system.NativeStart.main(Native Method) 
+0

@kgiannakakis спасибо, я новичок в форуме и не знаете, как отформатировать вещи еще :) – turtleboy

+0

я исправил пост информацию. Это ошибка времени выполнения NoClassDefFoundError *, а не исключение ClassNotFoundException *. –

ответ

2

Убедитесь, что вы ориентируетесь правильную версию SDK. В Eclipse щелкните правой кнопкой мыши ваш проект, выберите «Свойства», а затем «Android». Api 8 следует выбрать как цель построения проекта.

Вы также должны установить минимальный атрибут SDK в манифесте xml (это не имеет ничего общего с ошибкой).

+0

привет, да, я только что проверил свойства-> андроид, а уровень api равен 8, а целевое имя - 2.2, есть ли что-нибудь еще, что я мог бы попробовать? – turtleboy

+0

@turtleboy Является ли эмулятор/устройство полностью совместимым с 2.2? Не быть таким - (независимо от настроек проекта), вероятно, вызовет эту ошибку. –

+0

@pst Я только что проверил телефон, и это версия прошивки 2.1. все в api7 работает по телефону, но YuvImage api8 вверх. может 2.1 использовать api8? – turtleboy

1

Убедитесь, что пакет com.tecmark.FaceView доступен для вашего проекта. Что-то наподобие:
package com.tecmark.FaceView должно быть расположено в верхней части вашего кода в этом файле.

НТН,
Sriram

+0

yep оба класса, которые я использую, находятся в одном пакете com.tecmark – turtleboy

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