Ich kann org.apache.http.entity.ContentType aus irgendeinem Grund nicht importieren. Ich habe Apache HTTP 4.3.3 hinzugefügt:
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
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.
Ich hatte das gleiche Problem. Sie müssen sicherstellen, dass Sie jdk 1.7 und nicht 1.6 verwenden.
Laden Sie httpcore-4.3.2
jar herunter und fügen Sie sie dem lib-Ordner hinzu.
Tags und Links java android apache intellij-idea android-studio