org.apache.http.entity.ContentType ist nicht mehr in Apache?

8

Ich kann org.apache.http.entity.ContentType aus irgendeinem Grund nicht importieren. Ich habe Apache HTTP 4.3.3 hinzugefügt:

  • Kunde
  • Kern
  • commons-Codec
  • Ссылка
  • commons-logging
  • Ссылка
  • fließend-hc

Ursprünglich habe ich nicht alle importiert, aber da das Problem weiterhin besteht, habe ich jetzt alles gemacht, und ich habe mein Projekt gereinigt und neu erstellt.

import org.apache.http.entity.mime.MultipartEntityBuilder; funktioniert

und

import org.apache.http.HttpEntity; funktioniert auch

aber

import org.apache.http.entity.ContentType; wird überhaupt nicht gefunden

Ich verwende Android Studio (IntelliJ), daher bin ich nicht sicher, ob Build-Pfad-Antworten hilfreich sind

Ich habe auch versucht, über Gradle-Link zu importieren, aber ich habe einen anderen Fehler gefunden und brauche mehr Kontrolle über die JAR-Dateien selbst

    
CQM 06.11.2014, 15:50
quelle

3 Antworten

13

org.apache.http.entity.ContentType befindet sich im Modul org.apache.httpcomponents:httpcore:4.3.x . Aber das ist auch org.apache.http.HttpEntity . Die Tatsache, dass Sie die eine und nicht die andere finden, bedeutet höchstwahrscheinlich, dass sie nicht aus der JAR-Datei v4.3.x übernommen wird. Das Apache HttpComponents-Projekt hat in letzter Zeit viele Klassen umgestellt. Es kann also sein, dass HttpEntity in einer älteren / anderen Version von httpcore gefunden wird, die irgendwie eingezogen wird; eine Version, die nicht die Klasse ContentType hat. Sie möchten überprüfen, wo HttpEntity gefunden wird. Es gibt einige Möglichkeiten zu sehen, woher eine Abhängigkeit kommt.

Option 1 Eine der einfachsten Methoden besteht darin, den Cursor auf die Klasse zu setzen (entweder in der import-Anweisung oder in einer Variablendeklaration) und die Schnelldokumentation zu öffnen ( Strg + Q oder ^ J ). Oben im Dokumentationsdialog wird die Abhängigkeit angezeigt, in der die Klasse gefunden wurde:

Option 2 Diese Option zeigt Ihnen an, ob Sie mehrere Instanzen einer Klasse in Ihrem Klassenpfad haben. Öffnen Sie den Dialog Gehe zu Klasse ( Strg + N O ) und geben Sie ein der Klassenname (Sie können sich vollständig qualifizieren oder nicht. Sie können sogar den Namen eingeben und die Kamelsuche verwenden). In der Liste der gefundenen Klassen befindet sich rechts der Ort, an dem die Klasse gefunden wurde. Rechts davon ist die Abhängigkeit, von der die Klasse kommt. Wenn es mehr als einmal angezeigt wird, bedeutet dies, dass es mehrmals in verschiedenen Gläsern gezogen wird. Dies kann passieren (wenn ein Build-Tool verwendet wird), wenn eine andere Abhängigkeit eine andere Version von httpcore als transitive Abhängigkeit verwendet. Sie müssen das also lösen. In meinem Screenshot habe ich zwei verschiedene Versionen der org.springframework.http.HttpEntity Klasse. Eine von Frühling 3.2.10 und eine von 4.0.6. In diesem speziellen Fall liegt das daran, dass ich ein Spring 3.2.x-basiertes Modul und ein separates Spring 4.0.x-Modul in meinem Projekt habe. Ich bin damit einverstanden, da sie nicht kollidieren, da dies unabhängige Module sind. In den meisten Fällen wäre dies jedoch bedenklich.

Option 3 Sie können auch den Knoten Externe Bibliotheken im Werkzeugfenster Projekt erweitern und betrachten, um zu sehen, ob eine Abhängigkeit zweimal eingezogen wird.

Es ist unklar, wie Ihr Projekt konfiguriert ist. Du hast Gradle erwähnt, aber es schien mehr nach einem Nachdenken zu sein. Wenn Sie Maven oder Gradle verwenden und die richtige httpcore Abhängigkeit in Ihrer Pom- oder Build-Datei deklariert ist, stellen Sie sicher, dass Sie einen Reimport im entsprechenden Build-Tool-Fenster, damit es ordnungsgemäß synchronisiert wird und dieses Modul zur Abhängigkeit des Projekts hinzugefügt wird. Verwenden Sie dann die obigen Informationen, um festzustellen, ob mehrere Versionen des Moduls httpcore eingefügt wurden.

    
Javaru 06.11.2014, 18:08
quelle
0

Ich hatte das gleiche Problem. Sie müssen sicherstellen, dass Sie jdk 1.7 und nicht 1.6 verwenden.

    
James Gwee 15.05.2015 06:13
quelle
0

Laden Sie httpcore-4.3.2 jar herunter und fügen Sie sie dem lib-Ordner hinzu.

    
ShriKant A 24.02.2017 11:21
quelle