Android中的NoClassDefFondError。。。但该类位于类路径中包含的一个jar中
我正在用Android开发一个应用程序。它必须能够拍摄照片,并将照片发送到网页。代码如下:Android中的NoClassDefFondError。。。但该类位于类路径中包含的一个jar中,android,noclassdeffounderror,Android,Noclassdeffounderror,我正在用Android开发一个应用程序。它必须能够拍摄照片,并将照片发送到网页。代码如下: HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("someurl"); MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
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个小时试图解决这个问题:(我解决了同样的问题,如下所示:
java.lang.NoClassDefFoundError:org/apache/http/entity/mime/MultipartEntityBuilder
<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