使用Mark Murphy的MergeAdapter时,一切都可以正常编译,但是当ListView绑定发生时,调用addAdapter()方法时出现以下错误,导致崩溃:

java.lang.NoClassDefFoundError: com.commonsware.cwac.sacklist.SackOfViewsAdapter

SackOfViewsAdapter jar文件确实存在于cwac-merge项目的libs目录中。

我已经签出了该项目随附的演示项目,尽管尝试运行该项目时遇到NoClassDefFoundError异常,但我看不到它没有的任何内容。

我感觉这是一个Eclipse配置问题,但是我已经尝试了所有我能想到的东西。

有任何想法吗?

**更新:SackOfViewsAdapter在cwac-merge项目中也显示为引用的库。

**更新2:我的.classpath:

<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry kind="lib" path="/Users/colsen/Projects/android/cwac-merge/libs/CWAC-SackOfViewsAdapter.jar"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>


**更新3-将SackOfViewsAdapter复制到本地libs目录。

<classpath>
    <classpathentry kind="lib" path="libs/CWAC-SackOfViewsAdapter.jar"/>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

最佳答案

SackOfViewsAdapter jar文件确实存在于cwac-merge项目的libs目录中。


看起来您还需要使用SackOfViewsAdapter.jarMergeAdapter添加到项目的Eclipse构建路径中。即使库项目对此的引用在编译时起作用,但在运行时将不起作用。

我刚刚更新了demo/ Eclipse项目文件来反映这一点。

我为此感到抱歉。

10-04 22:59