android库 - 为库中的布局引发的noclassdeffounderror

时间:2012-01-06 09:42:07

标签: android eclipse android-layout jar

我遇到了以下问题:

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

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

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

4)我从其bin文件夹中复制了mylibrary.jar文件,包括新项目中的library.jar运行良好。所有内容都会编译,但在运行时会在启动时引发java.lang.NoClassDefFoundError:my.namespace.mylibrary.R $布局。

我做了什么:

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

2)然后我查看了jar文件(重命名为zip& unpacked)以查看 R $布局类不包含在 中。

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

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

感谢您的建议。

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

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。问题出在我派生的Activity中的这一行:

setContentView(R.layout.my_layout);

Eclipse从我的库项目中导入了R。通过更改导入正确的R来解决问题。

答案 1 :(得分:0)

似乎这个问题的唯一答案是在.java文件中创建不在.xml中的布局。测试过这个并运行良好。不知道admob如何获得.jar文件中包含的他们的布局。

答案 2 :(得分:-1)

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

然后在您的主要Android项目中:右键单击项目节点 - >属性 - > Android - >添加 - >选择您的图书馆项目 - >好的 - >行