私が構築しているアプリで Android 用の Factual ドライバーの使用を開始しようとしています。ここから.jarファイルをアプリ内のlibsフォルダーにドロップして、ドライバーをインストールしました。基本的に、ここからデモ コードを取得し、それを自分のアクティビティに落とし込み、必要に応じて変更して、最初に動作させるようにしました。
アクティビティを実行すると、次のように Factual を最初にインスタンス化する行を指す NoClassDefFoundError が返されます。
protected Factual factual = new Factual("KEY", "SECRET");
Eclipse で受け入れられるように、コードに 1 つの変更を加える必要がありました。その変更は、以下の 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)