2017-01-04 15 views
0

Ich bekomme Fatal Exception beim Erstellen von FileBody mit URI-Dateipfad von NoClassDefFoundError Hier ist mein Code.Immer FATALE AUSNAHME von 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(); 
    } 

und mein Log ist:

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

zeigen Sie Ihre build.gradle –

+0

Ich habe diese packagingOptions { ausschließen 'META-INF/ASL2.0' ausschließen 'META-INF/LIZENZ' ausschließen 'META-INF/MITTEILUNG' ausschließen ‚META-INF/DEPENDENCIES‘ } und Dateien kompilieren ('libs/Httpclient-4.2.3.jar') Dateien kompilieren ('libs/httpmime-4.3.jar') Dateien kompilieren ('libs/httpcore.jar') –

+0

versuche alle libs mit einer version zu haben, es könnte ein problem sein –

Antwort

0

Wie ContentType.java in httpcore seit v4.2 verfügbar ist. Sie verwenden wahrscheinlich eine falsche Version von httpcore.

Um dies zu beheben, suchen Sie ein Artefakt-Repository für die korrekte Version von httpcore, die in Ihrem Fall ist 4.2.2, download it und tauschen Sie es mit Ihrer aktuellen Version.

Ohne Ihr Buildsystem zu kennen, kann es auch sein, dass Sie die httpcore.jar nicht versenden. Stellen Sie in diesem Fall sicher, dass Sie die gleiche Mechanik wie bei den anderen beiden Gläsern verwenden.

Um diese Art von Problem zu vermeiden, verwenden Sie die Abhängigkeitsverwaltung von modernen Build-Systemen, in Ihrem Fall höchstwahrscheinlich Gradle oder zumindest die Versionsnummern auf JAR-Dateien.

Verwandte Themen