2017-01-04 2 views
0

Я получаю Fatal Exception при создании FileBody, используя путь к файлу URI NoClassDefFoundError вот мой код.Получение FATAL EXCEPTION для MultipartEntityBuilder

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

показать свою build.gradle –

+0

У меня есть этот packagingOptions { исключающих 'META-INF/ASL2.0' исключающих 'META-INF/ЛИЦЕНЗИИ' исключающих 'META-INF/УВЕДОМЛЕНИЕ' исключить «META-INF/ЗАВИСИМОСТИ» } и компилировать файлы ('ЛИЭС/HTTPClient-4.2.3.jar') компилировать файлы ('ЛИЭС/httpmime-4.3.jar') компилировать файлы ('ЛИЭС/httpcore.jar') –

+0

попробуйте иметь все библиотеки с одной версией, это может быть проблема –

ответ

0

Как ContentType.java доступен в httpcore так v4.2. вы, скорее всего, используете неправильную версию httpcore.

Чтобы исправить это, выполните поиск в артефакте репозитория для правильной версии httpcore, которая в вашем случае равна 4.2.2, download it и обменивает ее с вашей текущей версией.

Не зная о вашей системе сборки, это также может быть так, что вы не отправляете httpcore.jar. В этом случае обязательно используйте ту же самую механику, что и с двумя другими банками.

Для предотвращения такого рода проблем используйте функцию управления зависимостями современных систем сборки, в вашем случае, скорее всего, Gradle или, по крайней мере, сохраните номера версий в файлах jar.