我在使用 NoClassDefFoundError 的URI文件路径创建FileBody时遇到致命异常这里是我的代码。
try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(URLIMG);
try{
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.addPart("userfile", new FileBody(new File(file.getPath())));
// Send it
httpPost.setEntity(multipartEntity.build());
Log.e("post" , httpPost.toString());
HttpResponse response = httpClient.execute(httpPost, httpContext);
String serverResponse = EntityUtils.toString(response.getEntity());
Log.e("sd","serverResponse = "+serverResponse);
}catch (Exception e)
{
Log.e("Exception", "Exception: " + e.toString());
}
}catch (Exception e)
{
Log.e("Exception", "Exception: " + e.toString());
e.printStackTrace();
}
我的日志是:
01-04 18:15:13.881 15372-15372/com.example.hp_pc.cerv E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.hp_pc.cerv, PID: 15372
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/entity/ContentType;
at org.apache.http.entity.mime.content.FileBody.<init>(FileBody.java:89)
答案 0 :(得分:0)
自v4.2起,http {1}}可用于httpcore。你最有可能使用错误的httpcore版本。
要解决此问题,请在工件存储库中搜索正确版本的httpcore,在您的情况下为ContentType.java,4.2.2并将其与您当前的版本进行交换。
在不了解您的构建系统的情况下,也可能是您没有发送httpcore.jar的情况。在这种情况下,请确保使用与其他两个罐相同的机制。
要防止出现这类问题,请使用现代构建系统的依赖关系管理功能,在您的情况下很可能download it或至少保留jar文件的版本号。