代码之家  ›  专栏  ›  技术社区  ›  Fernando Miguélez

在Android库中声明的ClassNotFound launchig maps活动

  •  2
  • Fernando Miguélez  · 技术社区  · 14 年前

    我在尝试启动从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)
    

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

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

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

    更新


    我发现了一些系统痕迹,可以帮助清理情况:

    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 回复  |  直到 14 年前
        1
  •  3
  •   Janusz Daniel Rindt    14 年前

    如果要使用google提供的地图视图,需要完成3个步骤:

    1. 使用googleapi附带的模拟器或设备。在创建AVD的过程中,你可以选择设备是否有Google库。

    2. <uses-library android:name="com.google.android.maps" />
      添加到清单的应用程序标签。确保uses库在application标记中,而不仅仅是在manifest中
        2
  •  0
  •   Falmarri    14 年前

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

        3
  •  0
  •   Michaël BadZen    14 年前

    this 我可以帮你。

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

        4
  •  0
  •   WarrenFaith    14 年前

    猜猜看:你为你的项目选择了合适的SDK吗?每个版本你都有两次选择权。一个有谷歌API,一个没有和使用地图,你应该使用谷歌API的版本。