2012-04-18 46 views
1

我將一個在Eclipse Java項目中正常工作的代碼複製到了Android項目中,即使我導入了相同的.jars,我在Android項目中也遇到了編譯錯誤。顯然怪異的編譯錯誤使用org.apache.http.entity.StringEntity。在兩個不同的項目中有不同的行爲

在Android項目,Eclipse中顯示錯誤「構造StringEntity(字符串,字符串,字符串)是未定義」下面一行:

StringEntity se = new StringEntity("example data.", "application/json", "UTF-8"); 

但在其他Java項目,它編譯並運行良好。 documentation表示構造函數StringEntity(String string, String mimeType, String charset)確實存在。

我在兩個項目中導入了相同的org.apache.http.entity.StringEntity。 Eclipse項目中使用的jar與Android項目中使用的jar相同。我甚至複製並粘貼它們。我也清理了這個項目。仍然沒有成功。任何人都可以請向我解釋爲什麼這個錯誤發生?

回答

2

Android不使用最新版本的HttpClient 4.x.

Android version of StringEntity目前只有這些構造函數:

  • StringEntity(String s, String charset)
  • StringEntity(String s)

我認爲Android的SDK類優先於您提供的JAR文件相同的類。爲了避免將來出現這種混亂,我將刪除JAR--具有不同版本的相同類別從未做過任何人。

+0

我沒有意識到Android中有一個'StringEntity'。我組織了進口訂單,把我的進口瓶子放在上面,錯誤消失了。謝謝。你的回答幫助我瞭解到進口訂單很重要。 – AntonioJunior 2012-04-18 22:33:18

+0

請**從您的Android應用中刪除**任何HTTPClient JAR!有兩個版本的HTTPClient類將導致各種瘋狂的問題。嘗試使用Android所具有的功能,如果它確實無法正常工作,請查看「官方」HTTPClient的源代碼並挑選所需的更改,然後在您的代碼中實施它們。 – 2012-04-18 22:42:32

+0

是的,我已經刪除。確實,我造成了問題。我將使用Android提供的內容。謝謝。 – AntonioJunior 2012-04-18 23:49:04

2

您的項目更可能使用不同版本的Apache Http組件。該庫已經融入了Android,並且它很少是最新發布的版本。您目前使用的實際版本將取決於您正在使用的Android版本。

+0

您確定舊版本的HttpComponents不在您的構建路徑中嗎? – Perception 2012-04-18 21:54:23

相關問題