【问题标题】:NoClassDefFoundError: android.graphics.YuvImage (compiles but doesn't run)NoClassDefFoundError: android.graphics.YuvImage(编译但不运行)
【发布时间】:2011-06-24 19:41:15
【问题描述】:

我重新发布这个问题是因为我不确定我之前是否正确地问过这个问题。:) 我正在开发一个包含人脸检测的应用程序。相机启动正常。在预览帧回调中,我实例化了一个 faceview 对象(此类处理检测)。此类只能检测位图中的人脸,但回调中的图像是 YuvImage。我已将图像压缩为 jpeg,然后调用一种方法将该 jpeg 转换为位图,因此检测将起作用。

我遇到的问题是 Eclipse 说我正在使用的 YuvImage 存在 classnotfoundexception。我已经下载了 yuvimage 所属的 api8。源代码没有错误,编译正常。 ecilipse 无法加载 yuvimage 类有什么原因吗?这是一个sn-p,谢谢。

'代码'

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)

【问题讨论】:

  • @kgiannakakis 谢谢,我是论坛新手,还不知道如何格式化:)
  • 我已经修复了帖子信息。这是 NoClassDefFoundError 运行时错误,而不是 ClassNotFoundException 异常

标签: android noclassdeffounderror


【解决方案1】:

确保包com.tecmark.FaceView 可用于您的项目。类似:
package com.tecmark.FaceView 应该出现在此文件中代码的顶部。

HTH,
斯里拉姆

【讨论】:

  • 是的,我使用的两个类都在同一个包 com.tecmark 中
【解决方案2】:

确保您针对的是正确版本的 SDK。在 Eclipse 中右键单击您的项目,选择 Properties,然后选择 Android。应选择 Api 8 作为项目的构建目标。

您还应该在清单 xml 中设置 minimum SDK 属性(但这与错误无关)。

【讨论】:

  • 嗨,是的,我刚刚检查了属性->android,api 级别为 8,目标名称设置为 2.2,还有什么我可以尝试的吗?
  • @turtleboy 模拟器/设备是否完全兼容 2.2?不是这样——(不管项目设置如何)可能会导致此错误。
  • @pst 我刚刚检查了手机,它的固件版本是 2.1。 api7 中的所有内容都可以在手机上运行,​​但 YuvImage 是 api8 向上的。 2.1可以用api8吗?
  • 不,您不能在 2.1 手机中使用 api8。您需要更新固件才能这样做。
  • 天哪,我刚刚查看了将固件升级到 2.2 需要做什么,我不想尝试:),除非有一个更简单的网站可以解释 addictivetips.com/mobile/…
猜你喜欢
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多