Android中的NoClassDefFondError ...但Class位于Classpath中包含的一个jar中

Fus*_*dor 18 android noclassdeffounderror

我正在Android中开发一个应用程序.它必须能够拍照,并将该照片发送到网页.这是代码:

HttpClient httpclient = new DefaultHttpClient();

        HttpPost httpPost = new HttpPost("someurl");
        MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); //Here throws the exception
        multipartEntity.addPart("data",
                new InputStreamBody(
                        new ByteArrayInputStream(byteArray),
                        "image/png"));
        multipartEntity.addPart("caption", new StringBody(filename));

        httpPost.setEntity((HttpEntity) multipartEntity);
Run Code Online (Sandbox Code Playgroud)

我有我的ClassPath所需的库(httpclient,apache-mime4j-core,httpcore和httpmime).它在编译时没有显示任何错误.但是,当我运行该项目时,它会显示"java.lang.NoClassDefFoundError:org.apache.http.entity.mime.MultipartEntity",但该类存在于jar中(确切地说是在httpMime中).这是完整的痕迹:

04-09 10:21:59.362: E/AndroidRuntime(10352): FATAL EXCEPTION: main
04-09 10:21:59.362: E/AndroidRuntime(10352): java.lang.NoClassDefFoundError: org.apache.http.entity.mime.MultipartEntity
04-09 10:21:59.362: E/AndroidRuntime(10352):    at     com.publidirecta.AppAzafata.IniciarGPSActivity2.enviarImagen(IniciarGPSActivity2.java:206)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at com.publidirecta.AppAzafata.IniciarGPSActivity2.onActivityResult(IniciarGPSActivity2.java:196)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.app.Activity.dispatchActivityResult(Activity.java:3908)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2549)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:2595)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.app.ActivityThread.access$2000(ActivityThread.java:121)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:973)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at android.os.Looper.loop(Looper.java:130)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at  android.app.ActivityThread.main(ActivityThread.java:3701)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at java.lang.reflect.Method.invokeNative(Native Method)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at java.lang.reflect.Method.invoke(Method.java:507)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
04-09 10:21:59.362: E/AndroidRuntime(10352):    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我已尝试使用此任务中使用的所有jar的旧版本,但它仍然无效.那个罐子确实出现在Android项目的"引用的库"中.

我已经尝试了一切.任何人都知道为什么会这样?即将投掷自己的窗口.

先感谢您!

idi*_*ger 29

您需要创建libs项目中命名的文件夹,并将引用的jar复制到此文件夹.

  • 希望Eclipse会自动处理这个问题!浪费了我几个小时...... (5认同)

Aut*_*Tec 9

在自动更新的东西不成功,我下载了最新和最好的.但无法找到MultipartEntity类.我重新添加到项目中.我确定它在一个名为'libs'的文件夹中 - 但没有运气.安东促使我检查项目偏好.项目属性 - > Java构建路径 - >订单和导出:确保选中Android私有库.(我检查了所有).清理您的项目.问题消失了.