2013-01-06 52 views
2

我在eclipse中開發一個Android項目。我正在創建一個library project,供main project使用。 Main project使用external jar文件。我想將此external jar文件添加到我的library project,並將library project的jar文件添加到main project。我在庫項目中添加了該jar文件,但是當我編譯庫項目時,其大小沒有發生變化,並且外部jar文件未嵌入到庫項目中。是否可以在eclipse中將外部jar文件嵌入(組合)到我的庫項目中?

我的意思是我想將庫和外部jar合併到一個庫中,這個庫可以鏈接到我的項目。

我該怎麼做?

感謝,

+0

的[添加庫/ JAR到Eclipse Android項目]可能重複(http://stackoverflow.com/questions/3642928/Adding-a-library-jar-to-an-eclipse-android-project) – nullpotent

+0

@iccthedral不,我知道這一點。我想將其嵌入到我自己的圖書館項目中 – Linaina

+0

您是否在尋找類似此類的內容:http://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2 -android/ksoap2-android-assembly/2.6.3/ksoap2-android-assembly-2.6.3.pom?r = 945? – kamaci

回答

3

因此,您想將庫和外部jar合併到您的項目可以鏈接到的一個庫中?這是不可能的。您不能僅將兩個二進制文件(JAR)組合/鏈接,並期望它們作爲一個單獨的庫工作。您的庫是動態鏈接的,並且不是靜態的,並且每個庫都加載在不同的地址空間中。如果你想讓它們成爲一體,你需要把兩個庫(你現有的庫和外部的jar)的源代碼編譯成一個(即靜態鏈接)。

更新:

感謝的Sergiu的見解,那是相當正確的。上面的答案是基於一個庫,即JRE在運行時在某個內存位置加載了一個二進制文件,並且它是由環境計算的位置加載的函數/變量構成的二進制格式 - 通用CS理論。

根據您的意見,我搜索瞭如何合併兩個JAR,並且您的方法似乎正確。

這裏還有一個SO回答:Combine two JARs

退房的第2個答案,這也澄清有關MANIFEST.MF文件。

+4

這不完全正確。 Jar文件只是帶有不同擴展名的'.zip'文件,並且在大多數情況下,只需將同一個目錄中的兩個jar解壓縮並重新壓縮即可「合併」jar。另外,Java中沒有_linking_。 –

+0

@SergiuDumitriu我們應該如何處理文件MANIFEST.MF? – Linaina

+0

@SergiuDumitriu謝謝。我測試了它,它工作。有沒有什麼辦法可以在eclipse中做到這一點,而不需要解壓縮和壓縮?日蝕可以自動執行嗎? – Linaina

0

您可以添加外部JAR到使用兩種方式你的項目:

  1. 右鍵單擊項目,轉到Properties
  2. Java Build Path選項卡選擇Library選項卡並單擊Add External JARs..按鈕將外部jar文件添加到您的項目。
  3. 點擊OK

的另一種方式是jar文件複製到你的項目libs文件夾,然後用鼠標右鍵單擊該jar文件,並選擇Build Path>Add to Build Path.

試試這個方法,我希望它可以幫助你。

+0

我已經這樣做了。但是當我編譯我的庫時,我注意到它沒有嵌入到我的jar文件中 – Linaina

0

這是一個常見問題,它定義爲您的庫的範圍。通常情況下,範圍是「提供」,這意味着該庫應包含在類路徑(用於javac)和文件,但在這種情況下,你應該將庫範圍更改爲「編譯 「所以它也進入了Jar文件。

我不使用Eclipse,所以我不知道要看哪個菜單,但它是普通屬性,(在Apache Maven,IntelliJ,...)所以我很確定你可以找到它的位置在Eclipse上一點點搜索

長話短說,更改庫範圍爲「編譯」

相關問題