java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
Ich versuche zu laufen ein java-Programm und ich bin immer die folgenden Laufzeit-Fehlermeldung.Der Fehler ist unten dargestellt.
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)
Nun die Dateien, die ich habe, werden dem classpath Hinzugefügt werden, sind die folgenden.
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
Was ist der Grund für die "main" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET
Ich heruntergeladen http-core-4.1-alpha
wie, dass ist die jar enthält
org/apache/http/params/SyncBasicHttpParams class
aus findjar.com. So, die version des http-Kern ist nicht verhandelbar.Wie finde ich die version des httpclient, die kompatibel ist mit dieser version des http-core?
- Sie zwei Versionen
httpclient
undhttpcore
im classpath. Wahrscheinlich sollten Sie entfernen alte Versionen (aus dem maven-repository).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hast du zwei verschiedene Versionen von httpcore in Ihren Klassenpfad ein:
... obwohl das zweite ist tatsächlich exportiert als
CLASSPAHT
nach Ihrer Frage. Wir wissen auch nicht, was in Ihremlib
Verzeichnis - es könnte sogar sein mehr Versionen herum.Würde es auch zwei Versionen von httpclient, außer man ist auskommentiert. Ich schlage vor, Sie Sortieren all dies heraus, so dass Sie nur Verwendung der neuesten Versionen der beiden Bibliotheken. Meine Vermutung ist, dass das, was tatsächlich abgeholt wird, ist eine version des httpclient und eine version von httpcore, und Sie sind nicht kompatibel. Entweder dass, oder einfach nur in httpcore es gibt einige manifest-Eintrag aufgegriffen, aus einer jar-Datei, aber wenn dann eine Klasse ist aufgefordert, für die es immer den anderen.
Entweder Weg, nachdem Sie zwei Versionen der gleichen Bibliotheken in den classpath in einer Zeit, ist einfach eine schlechte Idee.
Sollten Sie auch stellen Sie sicher, dass die version von httpcore, die Sie verwenden, ist abhängig von der version des httpclient, die Sie verwenden. Zum Beispiel, ich habe gerade heruntergeladen die neueste version des httpclient (4.2.5), und er nutzt httpcore 4.2.4. Wenn Sie versuchen, zu verwenden httpclient-4.2 mit httpcore-4.1, die möglicherweise nicht kompatibel.