Android中的NoClassDefFondError。。。但该类位于类路径中包含的一个jar中

Android中的NoClassDefFondError。。。但该类位于类路径中包含的一个jar中,android,noclassdeffounderror,Android,Noclassdeffounderror,我正在用Android开发一个应用程序。它必须能够拍摄照片,并将照片发送到网页。代码如下: HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("someurl"); MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

我正在用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);
我的类路径中有所需的库(httpclient、apache-mime4j-core、httpcore和httpmime)。它在编译时间上没有显示任何错误。但是,当我运行该项目时,它显示“java.lang.NoClassDefFoundError:org.apache.http.entity.mime.MultipartEntity”,但该类确实存在于JAR中(确切地说是在HttpTime中)。以下是完整的跟踪:

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复制到此文件夹。

太奇怪了,我的应用程序已经在“lib”中包含了文件,并发生了此崩溃。在Idottiger的回答之后,我将其重命名为“libs”,它成功了。

在Eclipse中为您的项目打开属性。打开订单和导出,确保选择了所有需要的库。然后单击项目>清理。最后,你的问题应该解决了。

由于自动更新失败,我下载了最新和最好的。但是找不到MultipartEntity类。我将其重新添加到项目中。我确保它在一个名为“libs”的文件夹中,但运气不好。安东提示我检查项目偏好。项目属性->Java构建路径->排序和导出:确保选中Android私有库。(我都检查过了)。清理你的项目。问题消失了。

我今天遇到了一些问题:

a) 我把所有的jar文件都放在libs目录下,然后右键单击项目>构建路径>添加外部jar>选择jar文件。然后去了“订单和出口”,仍然得到了问题。 b) 事实证明,httpclient-4.3.1.jar和httpmime-4.3.1.jar是不够的。我还需要添加httpcore-4.3.jar


这样就消除了错误!:D我今天花了将近4个小时试图解决这个问题:(

我解决了同样的问题,如下所示:

  • 在您面临此问题的项目中打开pom.xml
    java.lang.NoClassDefFoundError:org/apache/http/entity/mime/MultipartEntityBuilder

  • 在dependencies下,添加这段代码

      <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.2</version>
            <scope>test</scope>
        </dependency>
    
    
    org.apache.httpcomponents
    httpime
    4.5.2
    测试
    
  • 清理并重新生成代码


  • 它会起作用。

    创建另一个新项目,并将这些类复制到该项目中,然后再试一次……看到这个答案可能会对您有所帮助|我刚刚有了这个,Eclipse让我引用该文件,但当它运行时,出现了错误!我刚刚重新编译,它工作了……结果相同。感谢Idottiger,感谢Eclipse在我的c中又浪费了两个小时假设只有
    httpime
    必须在“订单和导出”中进行检查;在项目清理之后,问题就消失了!不要忘记将项目>放入libs文件夹后进行清理。我也做了同样的操作,但我总是得到java.lang.NoClassDefFoundError:org.apache.http.entity.mime.HttpMultipart