代码之家  ›  专栏  ›  技术社区  ›  jyoungdev Thilo

当我在单个Android项目中使用多个Java包时,运行时会发生NoClassDefFoundError

  •  3
  • jyoungdev Thilo  · 技术社区  · 14 年前

    我做了以下工作:

    1. 在Eclipse中创建一个工作的Android项目(不是库或测试项目)。它有一个名为X的包,其中包含一个活动X.a。
    2. 在上述项目中使用至少一个类Y.C创建一个新的Java包Y。
    3. 从X.A内部调用Y.C(也就是说,从以前工作的原始包调用新包中的某些内容)。
    4. 构建并运行Android项目。

    它构建得很好,但使用Y.C在第一行抛出NoClassDefFoundError,表示它找不到Y.C。当我重构->将Y.C移动到包X(因此现在是X.C)时,不再抛出运行时异常。发生了什么?

    含糊不清的提示:我已经读到,当构建时类路径和运行时类路径以某种方式失去同步时,可能会发生类似的问题,但我还没有找到如何解决或修复该问题的方法。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Octavian Helm    14 年前

    在你的 AndroidManifest.xml 定义活动时,必须为驻留在子包甚至其他包中的活动设置完全限定的类名。

    完全限定的类名应该是 com.example.my.cool.app.Activity . 或者,当只使用子包时,可以这样设置 android:name=".app1.AnotherActivity" 当你的基本包是这样的时候 com.example.my.cool .