2

我想在Android应用程序中使用geotools(目前为8.0-M3,也可能是2.7.3)库,使用eclipse。(win7 prof,4gb ram)但是构建过程崩溃,我得到以下错误

未处理的事件循环异常 Java 堆空间

java堆空间问题应该是可以解决的,但似乎还有更多。(3gb应该够了吧?)

我的最终目标是能够通过OGC“网络要素服务”和“网络地图服务”在geoserver上请求一个postgres postgis db。

我已经将eclipse ini设置为

--launcher.XXMaxPermSize 128m --launcher.defaultAction openFile -vmargs -Xms40m -Xmx3700m

Geotools 需要的不仅仅是 android 库(与 jre6 (1.6.0_24) 相比)提供的。

-> 所以我将 jre6 文件夹中的整个 jar 加上 jts-1.8.jar 加上 geotools jar 复制到一个单独的(win)文件夹中。(Maven(在这种情况下不使用!)自己加载 jts-1.1.3 lib,有什么区别吗?)整个 jar 文件夹的大小接近 80Mb。

-> 在 eclipse android 项目结构中创建一个新文件夹。

-> 将win文件夹中的jar文件导入eclipse

- >将罐子添加到项目构建路径(应该将java移植到dx)(经过很长时间(几天)的试验,这是我知道的唯一方法,为应用程序提供所有必要的类。至少eclipse没有标记任何丢失的东西)。

编译后eclipse控制台输出:

Dx 警告:忽略匿名内部类的 InnerClasses 属性.....

几个班。可能是因为 jre lib。

我还有哪些其他选项可以在我的 android 项目中为 geotools 提供必要的 java 库?或者你对我下面提到的试验有任何想法吗?

PS:Android 书籍建议只从 jar 文件中复制缺少的类(及其依赖项哈哈).....(我可能会更好地将它们写成新的)

我已经尝试过使用 maven 插件。在使用geotools的纯java项目中效果很好,或者只要我不使用geotools,它就可以处理android项目。如果maven包含一个使用geotools的android项目,则libs由maven加载,但是android会说“手动修改R类”......(我无法恢复或重新创建)

有没有办法从eclipse项目中复制maven依赖库(它应该包含我需要的东西)。(我以为我可以将罐子从 win 存储库文件夹中复制出来,但这也包括许多其他罐子)。

Android 提供了一个“Java Native Interface”,允许使用 C++ 或其他库。是否可以选择解决丢失/交叉库的问题(我还没有 JNI 的经验)?

应用程序代码很短,如果对您有帮助,我可以粘贴它。

4

1 回答 1

2

我还有哪些其他选项可以在我的 android 项目中为 geotools 提供必要的 java 库?

如果您需要属于标准 Java 发行版但不在 Android 中的类,那么您就不走运了,除了重写 geotools 以避免需要这些类。

如果您需要属于其他第三方 Java 库的类,请将这些第三方 Java 库添加到您的项目中。

通过对 geotools 的简要检查,我怀疑它需要大量重写才能在 Android 上运行。

PS:Android 书籍建议只从 jar 文件中复制缺少的类(及其依赖项哈哈)

我的书没有。任何提出此建议的作者都需要对其进行检查。

于 2011-11-24T14:31:25.980 回答