18

我正在开发一个 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”但该类确实存在于罐子中(确切地说是在 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 项目的“引用的库”中。

我什么都试过了。有人知道为什么会这样吗?我正要扑向窗户。

先感谢您!

4

6 回答 6

29

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

于 2012-04-09T08:41:03.807 回答
9

在自动更新方面不成功,我下载了最新最好的。但是找不到 MultipartEntity 类。我将它重新添加到项目中。我确定它在一个名为“libs”的文件夹中——但没有运气。安东的提示我检查项目偏好。Project Properties -> Java Build Path -> Order and Export:确保选中 Android Private Libraries。(我都检查了)。清理你的项目。问题消失了。

于 2013-06-05T00:39:02.820 回答
3

太奇怪了,我的应用程序已经在“lib”中有文件并发生了崩溃。我按照白痴的回应将其重命名为“libs”并且它起作用了。

于 2012-08-02T10:35:41.147 回答
3

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

于 2013-05-21T15:18:23.343 回答
2

我今天遇到了一些问题:

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

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

于 2014-01-19T09:43:10.943 回答
0

我解决了同样的问题:

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

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

      <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.2</version>
            <scope>test</scope>
        </dependency>
    
  3. 清理并重建代码。

它会起作用的。

于 2016-11-09T10:33:46.223 回答