2011-11-24 93 views
1

我想在Android應用程序中使用eclipse來使用geotools(目前8.0-M3,也可能是2.7.3)庫。 (WIN7教授,4GB內存) 但構建進程崩潰,我得到以下錯誤Android應用程序基於geotools庫缺少原生java庫

未處理的事件循環異常Java堆空間

Java堆空間的問題應該是solveable ,但似乎還有更多。 (3GB應該就夠了,不是嗎?)

我的最終目標是能夠通過OGC「web feature service」和「web map service」在geoserver上請求postgres postgis db。

我已經設置了Eclipse INI到

--launcher.XXMaxPermSize 128米 --launcher.defaultAction 中openFile -vmargs -Xms40m -Xmx3700m

Geotools需要比android庫更多(與jre6(1.6.0_24)相比)。

- >所以我從jre6文件夾加jts-1.8.jar加geotools罐子中的整個罐子複製到一個單獨的(win)文件夾中。 (Maven(在這種情況下不使用!)本身加載jts-1.1.3 lib,它有什麼區別?) 整個jar文件夾的大小接近80Mb。

- >在eclipse的android項目結構中創建一個新的文件夾。

- >導入從勝利文件夾中的jar文件到Eclipse

- >添加jar添加到項目構建路徑(這應該端口Java來DX) (後很長一段時間(天)試驗多數民衆贊成我知道的唯一方法就是嚮應用程序提供所有必需的類。至少eclipse並不標記任何缺失)。

編譯後crased Eclipse控制檯輸出:

DX警告:忽略InnerClasses了一個匿名內部類屬性.....

幾類。可能是因爲lib文件。

還有什麼其他選項可以爲我的android項目提供geotools所需的java庫嗎? 或者你有任何關於我在下面提到的試驗的想法?

PS:Android的書都建議只複製缺少的類(和它們的依賴哈哈)從jar文件的.....(我可能會更好地把它們寫新)

我使用Maven的已經嘗試過插入。這在使用geotools的純java項目中工作得很好,或者只要我不使用geotools就可以照顧一個android項目。 如果行家包括使用geotools的庫被加載行家但隨後的Android這樣說:「手動修改R類別」 ...... (我不能恢復,或重新創建)

是有辦法的Android項目從eclipse項目中複製maven依賴庫(應該包含我需要的)。 (我認爲我可以將jar文件從win庫文件夾中複製出來,但也包括其他jar文件)。

Android提供了一個允許使用C++或其他庫的「Java Native Interface」。圍繞缺失/交叉庫的問題(我還沒有JNI的經驗)會是一個選擇嗎?

該應用程序代碼非常短,如果它可以幫助您,我可以將其粘貼。

回答

2

還有什麼其他選項可以提供geotools必需的java庫在我的android項目中有嗎?

如果您需要屬於標準Java分發但不在Android的類,那麼您運氣不好,除了重寫geotools以避免需要這些類。

如果您需要屬於其他第三方Java庫的類,請將這些第三方Java庫添加到您的項目中。

從對地理工具的簡要檢查中,我懷疑它需要大幅改寫才能在Android上運行。

PS:Android的書籍推薦給剛剛丟失的類(和它們的依賴哈哈)複製出來的jar文件

我的書沒有的。任何建議這樣做的作者都需要對他們的頭部進行檢查。