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

我正在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); 

我的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) 

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

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

先谢谢你!

您需要在项目中创建一个名为libs的文件夹,并将引用的jar复制到此文件夹。

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

太奇怪了,我的应用程序已经拥有“lib”中的文件并且崩溃了。 我在idiottiger的回复之后将其重命名为“libs”并且它有效。

在Eclipse中打开项目的属性。 并打开Order and Export,确保选择所需的所有库。 然后单击项目>清除。 最后,你的问题应该消失了。

我今天遇到了一些问题:

a)我将所有jar文件发送到libs目录,然后右键单击Project> Build Path> Add external jars>选择jar文件。 然后去“订单和出口”,仍然有问题。 b)事实certificate,httpclient-4.3.1.jar和httpmime-4.3.1.jar是不够的。 我还需要添加httpcore-4.3.jar。

这摆脱了错误! :DI今天花了近4个小时试图解决这个问题:(

我解决了同样的问题:

  1. 在您面对的项目中打开pom.xml
    java.lang.NoClassDefFoundError:org / apache / http / entity / mime / MultipartEntityBuilder

  2. 在依赖项下,添加这段代码。

       org.apache.httpcomponents httpmime 4.5.2 test  
  3. 清理并重建代码。

它会工作。