java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
Je suis en train de lancer un programme en java et j'obtiens l'erreur exécution suivantes.L'erreur est indiqué ci-dessous.
Exception in thread "main" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
at org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:175)
at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:158)
at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448)
at org.apache.http.impl.client.AbstractHttpClient.createClientConnectionManager(AbstractHttpClient.java:309)
at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:466)
at org.apache.http.impl.client.AbstractHttpClient.createHttpContext(AbstractHttpClient.java:286)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:851)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at net.floodlightcontroller.core.internal.PacketStreamerClient.registerForPackets(PacketStreamerClient.java:90)
at net.floodlightcontroller.core.internal.PacketStreamerClient.main(PacketStreamerClient.java:51)
Maintenant les fichiers que j'ai ajouté au classpath sont les suivantes.
export CLASSPATH=$(JARS=(./lib/*.jar); IFS=:; echo "${JARS[*]}")
export CLASSPATH=$CLASSPATH:~/.m2/repository/org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar
export CLASSPATH=$CLASSPATH:~/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
export CLASSPATH=$CLASSPATH:~/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
export CLASSPAHT=$CLASSPATH:~/ms_thesis/ONOS/httpcore-4.1.jar
#export CLASSPATH=$CLASSPATH:~/ms_thesis/ONOS/lib/httpclient-4.2.jar
export CLASSPATH=$CLASSPATH:~/google-gson-2.2.4/gson-2.2.4.jar
Quelle est la raison de "main" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
J'ai téléchargé http-core-4.1-alpha
comme c'est le pot qui contient
org/apache/http/params/SyncBasicHttpParams class
de findjar.com. Alors que la version de http-core n'est pas négociable.Comment puis-je trouver la version de httpclient qui est compatible avec cette version de http-core?
Vous avez deux versions
httpclient
et httpcore
dans le classpath. Probablement, vous devez supprimer les anciennes versions (à partir du repository maven).OriginalL'auteur liv2hak | 2013-08-15
Vous devez vous connecter pour publier un commentaire.
Vous avez deux versions différentes de httpcore dans votre classpath:
... même si la deuxième est effectivement exporté comme
CLASSPAHT
en fonction de votre question. Nous ne savons pas ce qui est dans votrelib
répertoire - là, peut-être même de plus versions autour de.Il y aurait également deux versions de httpclient, sauf un qui est commenté. Je vous suggère de trier tout cela afin que vous êtes seulement en utilisant les dernières versions des deux bibliothèques. Ma conjecture est que ce qui est réellement d'être pris est une version de httpclient et une version de httpcore, et ils ne sont pas compatibles. Soit ça, ou seulement à l'intérieur de httpcore il y a quelques manifeste entrée, capté à partir d'un fichier jar, mais alors quand une classe est demandé pour l'obtention de l'autre.
De toute façon, avoir deux versions de la même bibliothèque dans votre classpath, à un moment, c'est tout simplement une mauvaise idée.
Vous devez également vous assurer que la version de httpcore que vous devez utiliser est fonction de la version de httpclient que vous utilisez. Par exemple, je viens de télécharger la dernière version de httpclient (4.2.5) et il utilise httpcore 4.2.4. Si vous essayez d'utiliser httpclient-4.2 avec httpcore-4.1, qui peuvent ne pas être compatibles.
SyncBasicHttpParams est dans httpcore-4.2.4.jar comme bien donc il n'y a pas besoin d'utiliser une alpha fichier jar.
merci pour la réponse. j'ai également ajouté deux versions différentes de httpcore.
OriginalL'auteur Jon Skeet