我正在尝试在我正在构建的应用程序中开始使用适用于 Android 的 Factual 驱动程序。我已经通过将 .jar 文件从这里放到我的应用程序的 libs 文件夹中来安装他们的驱动程序。我基本上只是从这里获取演示代码并将其放入我自己的活动中,并根据需要进行修改以使其最初工作。
当我运行活动时,我得到一个 NoClassDefFoundError 指向我第一次实例化 Factual 的行,如下所示:
protected Factual factual = new Factual("KEY", "SECRET");
我必须对代码进行一项更改,以便 Eclipse 接受它。该更改位于下面的 FactualRetrievalTask 类中:
public class FactualRetrievalTask extends AsyncTask<Query, Integer, List<ReadResponse>> {
@Override
protected List<ReadResponse> doInBackground(Query... params) {
List<ReadResponse> results = new ArrayList<ReadResponse>(); //changed from Lists.newArrayList();
for (Query q : params) {
results.add(factual.fetch("restaurants-us", q));
}
return results;
}
是List<ReadResponse> results = new ArrayList<ReadResponse>();
,List<ReadResponse> results = Lists.newArrayList();
但这给了我一个错误,说“无法解析列表”。做了一点研究,我确定我可以把它改成现在的样子。
但是,当我跑步时,我得到NoClassDefFoundError
,它指向com.google.common.collect.Lists
。我有一种感觉,我所做的这个改变可能是造成这种情况的原因,但我不确定如何继续和解决它。任何帮助将不胜感激。相关日志如下:
04-14 17:06:01.209: E/AndroidRuntime(11688): FATAL EXCEPTION: main
04-14 17:06:01.209: E/AndroidRuntime(11688): java.lang.NoClassDefFoundError: com.google.common.collect.Lists
04-14 17:06:01.209: E/AndroidRuntime(11688): at com.factual.driver.Factual.<init>(Factual.java:46)
04-14 17:06:01.209: E/AndroidRuntime(11688): at com.factual.driver.Factual.<init>(Factual.java:57)
04-14 17:06:01.209: E/AndroidRuntime(11688): at com.example.blobtag2.PlaceActivity.<init>(PlaceActivity.java:64)
04-14 17:06:01.209: E/AndroidRuntime(11688): at java.lang.Class.newInstanceImpl(Native Method)
04-14 17:06:01.209: E/AndroidRuntime(11688): at java.lang.Class.newInstance(Class.java:1409)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.app.Instrumentation.newActivity(Instrumentation.java:1040)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1757)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1873)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.app.ActivityThread.access$1500(ActivityThread.java:135)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.os.Handler.dispatchMessage(Handler.java:99)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.os.Looper.loop(Looper.java:150)
04-14 17:06:01.209: E/AndroidRuntime(11688): at android.app.ActivityThread.main(ActivityThread.java:4358)
04-14 17:06:01.209: E/AndroidRuntime(11688): at java.lang.reflect.Method.invokeNative(Native Method)
04-14 17:06:01.209: E/AndroidRuntime(11688): at java.lang.reflect.Method.invoke(Method.java:507)
04-14 17:06:01.209: E/AndroidRuntime(11688): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
04-14 17:06:01.209: E/AndroidRuntime(11688): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
04-14 17:06:01.209: E/AndroidRuntime(11688): at dalvik.system.NativeStart.main(Native Method)