我有这个问题,我不明白如何解决。 我已经使用 Maven 在 Eclipse 中导入了一个 Maps Forge 项目,但如果尝试在设备上加载项目,则会收到此错误。但我知道那个类在项目中。我该如何解决这个问题?
我正在使用 Mapsforge rescue 4.0 库。我使用相同的方法导入Mapsforge 0.31,一切正常。
02-25 16:46:03.202: E/AndroidRuntime(6370): java.lang.NoClassDefFoundError: org.mapsforge.map.android.graphics.AndroidGraphicFactory
这是应用程序的pom.xml。
<?xml version="1.0" encoding="UTF-8"?>
http://maven.apache.org/xsd/maven-4.0.0.xsd> 4.0.0 org.mapsforge 地图锻造 0.4.0-快照 ../../../pom.xml
<artifactId>Samples</artifactId>
<packaging>apk</packaging>
<properties>
<rootDirectory>../../../</rootDirectory>
<targetJdk>1.6</targetJdk>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<dex>
<jvmArguments>
<jvmArgument>-Xmx512M</jvmArgument>
</jvmArguments>
</dex>
</configuration>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<useProjectReferences>false</useProjectReferences>
<buildOutputDirectory>bin/classes</buildOutputDirectory>
<additionalBuildcommands>
<buildcommand>com.android.ide.eclipse.adt.ResourceManagerBuilder</buildcommand>
<buildcommand>com.android.ide.eclipse.adt.PreCompilerBuilder</buildcommand>
<buildcommand>com.android.ide.eclipse.adt.ApkBuilder</buildcommand>
<buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
</additionalBuildcommands>
<additionalProjectnatures>
<projectnature>org.eclipse.jdt.core.javanature</projectnature>
<projectnature>com.android.ide.eclipse.adt.AndroidNature</projectnature>
</additionalProjectnatures>
<classpathContainers>
<classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
<classpathContainer>com.android.ide.eclipse.adt.ANDROID_FRAMEWORK</classpathContainer>
<classpathContainer>com.android.ide.eclipse.adt.LIBRARIES</classpathContainer>
<classpathContainer>com.android.ide.eclipse.adt.DEPENDENCIES</classpathContainer>
</classpathContainers>
<excludes>
<exclude>com.google.android:android</exclude>
<exclude>org.apache.httpcomponents:httpclient</exclude>
<exclude>org.apache.httpcomponents:httpcore</exclude>
<exclude>commons-codec:commons-codec</exclude>
<exclude>commons-logging:commons-logging</exclude>
<exclude>org.json:json</exclude>
<exclude>org.khronos:opengl-api</exclude>
<exclude>xerces:xmlParserAPIs</exclude>
<exclude>xpp3:xpp3</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.mapsforge</groupId>
<artifactId>mapsforge-map-android</artifactId>
<type>apklib</type>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>android</groupId>
<artifactId>android</artifactId>
<version>4.4.2_r2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.jayway.android.robotium</groupId>
<artifactId>robotium-solo</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r7</version>
</dependency>
</dependencies>
解决方案如下:
- 下载这 5 个文件:地图锻造核心地图锻造地图地图锻造-地图-阅读器mapsforge-map-androidSVG-安卓
- 将这些库(jar 文件)放在项目文件夹库中
- 比转到项目>清洁
您不需要安装 Maven 或其他插件。通过 Java 构建路径 -> 库 ->添加外部 JAR 包含库将不起作用。您需要将其放在 libs 文件夹中。如果仍然不起作用,请确保更新您的安卓工具,然后重试。
祝你好运:)