【问题标题】:android library - noclassdeffounderror raised for layouts from the libraryandroid 库 - 为库中的布局引发 noclassdeffounderror
【发布时间】:2012-05-16 01:24:22
【问题描述】:

我遇到了以下问题:

1) 我在 Eclipse 中创建了一个库(选择了“[x] Is Library”)。它包含 2 个布局(main.xml 和另一个)。

2) 当我在一个 Eclipse 工作区中使用它时,它工作得非常好 - 我可以轻松地将它包含在另一个项目中并毫无问题地使用它。

3) 我的工作空间最近变得很大,而 Eclipse 甚至比以前更慢(而且我正在使用英特尔凌动“驱动”上网本)。所以我决定创建一个新的。

4) 我已经从它的 bin 文件夹中复制了 mylibrary.jar 文件,包括新项目中的 library.jar 运行良好。一切都编译,但在运行时 java.lang.NoClassDefFoundError: my.namespace.mylibrary.R$layout 在启动时引发。

我做了什么:

1) 我试图在 stackoverflow 上找到解决方案,但 NoClassDefFoundError on external library project for Android 是我找到的,但我已经添加了 jar 文件。

2) 然后我查看了 jar 文件(重命名为 zip 并解压),发现 R$layout 类不包含在其中

如何将布局类包含在 library.jar 文件中?

这真的是我问题的根源还是我做错了什么?

感谢您的建议。

编辑:我已检查并从库中删除 xml 布局(例如,在代码中创建一个虚拟布局)停止 NoClassDefFoundError。然而,查看 admob.jar 文件似乎可以将 R&layout 类包含到 jar 文件中。

【问题讨论】:

    标签: android eclipse android-layout jar


    【解决方案1】:

    我遇到了同样的问题。问题是我派生的活动中的这一行:

    setContentView(R.layout.my_layout);
    

    Eclipse 已经从我的库项目中导入了 R。通过将其更改为导入正确的 R 解决了问题。

    【讨论】:

      【解决方案2】:

      似乎对此的唯一答案是在 .java 文件而不是 .xml 中创建布局。测试了这个,效果很好。不知道 admob 如何将他们的布局包含在 .jar 文件中。

      【讨论】:

        【解决方案3】:

        要添加库项目,首先请确保您的库项目实际上已标记为库项目。右键单击项目节点 --> 属性 --> Android --> 单击“是库”复选框 --> 确定。

        然后在你的主Android项目中:右键项目节点-->属性-->Android-->添加-->选择你的库项目-->确定-->确定

        【讨论】:

        • 谢谢 Damian,我确实知道如何将库标记为这样 - 完全使用“[ ] is Library”片段 - 我已将其标记为“[x] is Library”。在项目中包含图书馆对我来说并不神秘。您建议的方式仅适用于单个 Eclipse 工作区。我的目的是创建一个新的——Eclipse 在工作区中的项目越多越慢,在工作区中导航越少项目越容易。但我无法完成这项工作。同时,我检查了 admob.jar,他们设法将 R$layout.class 放入 jar 文件中……虽然不清楚如何做。
        猜你喜欢
        • 1970-01-01
        • 2017-02-12
        • 1970-01-01
        • 2013-05-13
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多