2014-11-06 8 views
8

Non riesco a importare org.apache.http.entity.ContentType per qualche motivo. Ho aggiunto HTTP Apache 4.3.3:org.apache.http.entity.ContentType non è più in Apache?

  • cliente
  • nucleo
  • commons-codec
  • httpclient-cache
  • commons-logging
  • httpmime
  • fluente-hc

in origine non ho impor t tutti questi, ma dal momento che il problema persiste ho fatto tutto ora, e ho pulito il mio progetto e ricostruito

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

e

import org.apache.http.HttpEntity; funziona anche

ma

import org.apache.http.entity.ContentType; non si trova affatto

sto utilizzando un Droid Studio (IntelliJ) quindi non sono sicuro risposte percorso di generazione sono utili qui

Ho anche provato ad importare tramite collegamento Gradle, ma ho incontrato un errore diverso e hanno bisogno di un maggiore controllo sul file il vaso stesso

risposta

13

org.apache.http.entity.ContentType è nel modulo org.apache.httpcomponents:httpcore:4.3.x. Ma lo è anche org.apache.http.HttpEntity. Il fatto che tu stia trovando uno e non l'altro molto probabilmente significa che non vengono estratti dal VAR JAR V4.3.x. Il progetto Apache HttpCommponents ha spostato molte classi recentemente. Quindi potrebbe essere trovare HttpEntity in una versione precedente/diversa di httpcore che viene attivata in qualche modo; una versione che non ha la classe ContentType. Ti consigliamo di verificare dove si trova HttpEntity. Ci sono alcuni modi per vedere da dove viene presa una dipendenza.

Opzione 1 Uno dei modi più semplici è quello di posizionare il cursore sulla classe (nel prospetto di importazione o una dichiarazione di variabile) e aprire la documentazione rapido (Ctrl + Q o ^J). Nella parte superiore della finestra di dialogo di documentazione, mostrerà la dipendenza in cui si trova la classe:

enter image description here

Opzione 2 Questa opzione vi mostrerà se si dispone di più istanze di una classe sul vostro percorso di classe . Aprire il Goto Classe dialogo (Ctrl +N o O) e immettere il nome della classe (è possibile qualificare o non completamente.È anche possibile inserire pariteticamente il nome e utilizzare la ricerca del caso cammello). Nell'elenco di classi trovate, a destra sarà dove viene trovata la classe. enter image description here A destra è la dipendenza da cui proviene la classe. Se mostra più di una volta, significa che viene tirato più volte in barattoli diversi. Ciò può accadere (quando si utilizza uno strumento di compilazione) se un'altra dipendenza utilizza una versione diversa di httpcore come dipendenza transitiva. Quindi dovrai risolverlo. Si noti nella mia schermata ho due versioni differenti della classe org.springframework.http.HttpEntity. Uno da Spring 3.2.10 e uno da 4.0.6. In questo caso particolare è perché ho un modulo basato su Spring 3.2.x e un modulo Spring 4.0.x separato nel mio progetto. Quindi sono d'accordo perché non si scontrano poiché quelli sono moduli indipendenti. Ma nella maggior parte dei casi, ciò sarebbe motivo di preoccupazione.

Opzione 3 È inoltre possibile espandere e guardare ai librerie esterne nodo nella finestra strumento progetto per vedere se una dipendenza viene tirato in due volte.

Non è chiaro come sia configurato il progetto. Hai menzionato gradle, ma sembrava più come un ripensamento. Se si utilizza Maven o Gradle e la dipendenza httpcore corretta viene dichiarata nel file pom o build, assicurarsi di eseguire reimportare enter image description here nella finestra dello strumento di compilazione appropriata in modo che si sincronizzi correttamente e che il modulo venga aggiunto alla dipendenza del progetto. Quindi utilizzare le informazioni di cui sopra per vedere se si dispone di più versioni del modulo httpcore.

+0

Buono .. grazie. – vijay

0

Ho avuto lo stesso problema. Devi assicurarti di utilizzare jdk 1.7 e non 1.6.

0

Scarica jar httpcore-4.3.2 e aggiungi alla cartella lib.

Problemi correlati