我正在尝试使用 Mapsforge 将 map View 添加到我的应用程序中。我已完成以下操作:
- 下载 jar 文件并将其放置在
libs/
文件夹中- mapsforge-core-0.4.0.jar
- mapsforge-map-0.4.0.jar
- mapsforge-map-android-0.4.0.jar
- mapsforge-map-reader-0.4.0.jar
- 右键单击文件并选择构建路径 > 添加到构建路径。
- 在项目属性中,将四个 jar 标记为导出。
但是,当我运行我的应用程序时,它会在第一次调用库中的类时崩溃:
E/AndroidRuntime(21265): java.lang.NoClassDefFoundError: org.mapsforge.map.android.graphics.AndroidGraphicFactory
Android SDK工具均为17以上版本,不涉及Maven。
我一直在寻找答案,但没有结果。我尝试过将 jar 在列表中向上移动,清理项目 - 这和我已经做的事情是网上建议的本质。没有任何帮助。
当我检查 bin/dexedLibs 的内容时,我注意到 Mapsforge 的 jar 已创建,但除了 list 文件和(在 Maps jar 的情况下)osmarender 资源之外,几乎是空的。值得注意的是,classes.dex 文件不存在。该文件夹中的Android支持库包含一个classes.dex文件。
有什么线索吗?
编辑:我检查了原始 jar 文件。在查看 .class 文件时,我注意到每个文件都以 CA FE BA BE 00 00 00 33
开头,即采用 Java 7 格式。
根据网上查到的一些资料,Android SDK不支持Java 7。现在还是这样吗?这可以解释为什么没有任何效果,但会让我想知道为什么 Mapsforge 开发人员会使用 Java 7 编译一个与 Android 一起使用的 jar...
最佳答案
NoClassDefFound 确实是一个很难解决的异常,您可以尝试一种解决方法。
解决方法:Java 构建路径 -> Oeder 和导出 -> 在 yourPath/src 上方制作 sur 3rd.jar
我知道android support java7 ,仅当您使用19以上版本时。
关于android - Mapsforge 0.4.0 和 Eclipse 出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587939/