ClassNotFound launchig映射在Android库中声明的活动

时间:2010-09-08 07:36:01

标签: android google-maps runtime

我在尝试启动从MapActivity派生的活动(TestLocationActivity)时遇到此异常,并在Android库项目中声明:

09-08 09:29:45.357: ERROR/AndroidRuntime(7502): java.lang.NoClassDefFoundError: msumo.business.testlocation.impl.view.TestLocationActivity
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.app.test2.impl.Test2AppManagerImpl.loadNewScreen(Test2AppManagerImpl.java:94)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.business.common.GuiAppManager.handleMessage(GuiAppManager.java:101)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.core.MessageBus.dispatchMessage(MessageBus.java:338)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.core.MessageBus$1.doWork(MessageBus.java:251)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.core.util.WorkerThread.run(WorkerThread.java:29)

我找不到问题的根源。我已经在主应用程序的AndroidManifest.xml和库项目中包含了Google Maps库声明:

 <uses-library android:name="com.google.android.maps" />

在Eclipse中,我没有收到错误,应用程序正常启动,但在尝试启动指示的Activity时,它失败了。启动活动的代码块如下:

    Intent intent = new Intent(ctx, TestLocationActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    ctx.startActivity(intent);

我不知道可能出现什么问题。是否可能无法使用Android库项目中的Google API库?

更新


我找到了一些可以帮助清除情况的系统跟踪:

09-08 10:53:34.615: INFO/dalvikvm(13221): Rejecting re-init on previously-failed class Lmsumo/platform/location/impl/LocationModuleImpl$2; v=0x0
09-08 10:53:34.654: WARN/System.err(13221): java.lang.NoClassDefFoundError: msumo.platform.location.impl.LocationModuleImpl$2
09-08 10:53:34.654: WARN/System.err(13221):     at msumo.platform.location.impl.LocationModuleImpl.doUseBestProvider(LocationModuleImpl.java:189)
09-08 10:53:34.654: WARN/System.err(13221):     at msumo.platform.location.LocationModule.performQuery(LocationModule.java:329)
09-08 10:53:34.662: WARN/System.err(13221):     at msumo.platform.location.LocationModule.handleMessage(LocationModule.java:543)
09-08 10:53:34.662: WARN/System.err(13221):     at msumo.core.MessageBus.dispatchMessage(MessageBus.java:338)
09-08 10:53:34.662: WARN/System.err(13221):     at msumo.core.MessageBus$1.doWork(MessageBus.java:251)
09-08 10:53:34.669: WARN/System.err(13221):     at msumo.core.util.WorkerThread.run(WorkerThread.java:29)
09-08 10:53:34.685: WARN/System.err(13221): java.lang.NoClassDefFoundError: msumo.platform.location.impl.LocationModuleImpl$2
09-08 10:53:34.685: WARN/System.err(13221):     at msumo.platform.location.impl.LocationModuleImpl.doUseBestProvider(LocationModuleImpl.java:189)
09-08 10:53:34.685: WARN/System.err(13221):     at msumo.platform.location.LocationModule.performQuery(LocationModule.java:329)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.platform.location.LocationModule.handleMessage(LocationModule.java:543)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.core.MessageBus.dispatchMessage(MessageBus.java:338)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.core.MessageBus$1.doWork(MessageBus.java:251)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.core.util.WorkerThread.run(WorkerThread.java:29)

4 个答案:

答案 0 :(得分:3)

如果您想使用谷歌提供的MapView,您需要完成3个步骤:

  1. 获取调试和部署证书的Api密钥,并在应用程序中使用正确的密钥
  2. 使用Google API附带的模拟器或设备。在创建AVD期间,您可以选择设备是否包含Google库。
  3. 在您的清单中注册Google地图库的使用情况。这是通过添加:
    来完成的 <uses-library android:name="com.google.android.maps" />
    到您的清单的应用程序标签。确保使用库位于应用程序标记内,而不仅仅是在清单中

答案 1 :(得分:0)

您是否在清单中注册了TestLocationActivty?

答案 2 :(得分:0)

也许this可以帮到你。

您是否注册以获取Maps API密钥?这可能是您遇到问题的原因。

答案 3 :(得分:0)

猜测一下:您是否为您的项目选择了正确的SDK?您可以选择每个版本两次。一个使用Google API,一个没有和使用地图,您应该使用带有Google API的版本。