我正在尝试使用Mapsforge向我的应用程序添加地图视图。我做了以下事情:
libs/
文件夹中
但是,当我运行我的应用程序时,它会在第一次调用库中的类时崩溃:
E/AndroidRuntime(21265): java.lang.NoClassDefFoundError: org.mapsforge.map.android.graphics.AndroidGraphicFactory
Android SDK工具都高于17版。没有Maven参与。
我一直在寻找答案,但无济于事。我已经尝试在列表中移动罐子,清理项目 - 这和我已经做过的事情是在网上建议的内容的本质。什么都没有帮助。
当我检查bin / dexedLibs的内容时,我注意到创建了mapsforge的jar,但实际上是空的,除了清单文件和(在map 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 ...
答案 0 :(得分:2)
NoClassDefFound确实是一个难以解决的异常,你可以尝试一种解决方法。
workaroud:Java构建路径 - > Oeder and Export - > make sur 3rd.jar高于yourPath / src
我知道android support java7,只有在您使用19以上的版本时才会知道。
答案 1 :(得分:1)
@Ninja指出了我正确的方向,但我会在这里发布详细的步骤。
简短回答:您需要Android工具链的19或更高版本,因为该版本引入了针对预构建的Mapsforge 0.4.0库构建所需的Java 7支持。
如何更新:
通过这些步骤,我的Mapsforge项目可以正常运行 - 我可以显示地图并且NoClassDefFoundError
已经消失。