2013-08-15 13 views
7

Bir java programı çalıştırmaya çalışıyorum ve aşağıdaki çalışma zamanı hatası alıyorum. Hata aşağıda gösterilmiştir.java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET

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) 

Artık, sınıf yoluna eklediğim dosyalar şunlardır. "Ana" java.lang.NoSuchFieldError nedeni nedir

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 

: DEF_CONTENT_CHARSET

Bunun yanı http-core-4.1-alpha indirilen findjar.com dan org/apache/http/params/SyncBasicHttpParams class içeren kavanozu. Bu nedenle, http-core'in sürümü tartışılmaz değil. Http-core'in bu sürümü ile uyumlu olan httpclient sürümünü nasıl bulabilirim?

+2

İki yolunuzda 'httpclient' ve 'httpcore' sınıf yolunda. Muhtemelen eski sürümleri (maven deposundan) kaldırmalısınız. – aim

cevap

12

Sen sınıf yolunda httpcore iki farklı versiyonunu var:

~/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar 
~/ms_thesis/ONOS/httpcore-4.1.jar 

... ikincisi aslında sorunuza göre CLASSPAHT olarak dışa olmasına rağmen. Ayrıca, lib dizininizde ne olduğunu bilmiyoruz - adet daha sürümü var.

Ayrıca, biri dışarıda yorumlandığı sürece, httpclient'in iki sürümü de olacaktır. Tüm bu kitaplıkların en son sürümlerini kullanarak, yalnızca olmasını sağlamanızı öneririz. Benim tahminim aslında alınmakta olan bir şey httpclient ve httpcore bir versiyonu ve uyumlu değil. Ya bu, ya da sadece httpcore içinde bir kavanoz dosyasından alınan bazı açık bir giriş var, ama sonra bir sınıf diğerini alması istendiğinde.

Her iki durumda da, aynı yoldaki iki kitaplık aynı anda sınıf yolunuzda olması kötü bir fikirdir.

Ayrıca, kullandığınız httpcore sürümünün kullandığınız httpclient sürümü için uygun olduğundan emin olmalısınız. Örneğin, en son httpclient (4.2.5) sürümünü indirdim ve httpcore 4.2.4 kullanıyor. Httpcore-4.2'yi httpcore-4.1 ile kullanmaya çalışıyorsanız, bu uyumlu olmayabilir.

+0

Lütfen güncelleştirilmiş yorumları inceleyin. – liv2hak

+1

@ liv2hak: SyncBasicHttpParams, httpcore-4.2.4.jar'da olduğu gibi, yani * alpha * jar dosyası kullanmaya gerek yoktur. Cevabınız için –

+0

teşekkürler. Ayrıca iki farklı httpcore sürümü ekledim. – MacDaddy