2016-06-17 19 views
0

ためTypeTokenを使用してタイプを作成するときに、私は、私は奇妙な例外を取得することを行うと奇妙なNoClassDefFoundErrorが地図

Map<Integer, List<Object>> 

ためjava.lang.reflect.Typeオブジェクトを取得しようとしている:

java.lang.NoClassDefFoundError: com.app.directions.DirectionsTask$1 
    at com.app.directions.DirectionsTask.start(DirectionsTask.java:53) 
    at com.app.directions.DirectionsDialog.onActivityCreated(DirectionsDialog.java:80) 
    at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1983) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

クラスの指示行53は、私が呼び出す場所です。

Type mapType = new TypeToken<Map<Integer, List<Object>>>(){}.getType(); 

私はそれを使ってリストの型を取得しています問題を解決してください:

Type resultType = new TypeToken<List<Vehicle>>() { }.getType(); 

私のコードには何が問題なのですか?

私DirectionsTaskクラス以下

public class DirectionsTask implements Callback<Direction[]> { 

public void start() { 
    Type mapType = new TypeToken<List<Object>>(){}.getType(); 
} 

@Override 
public void onResponse(Call<Direction[]> call, Response<Direction[]> response) { 
    Log.d("DirectionsTask", "onResponse: code=" + response.code() + " message=" + response.message() 
     + " body=" + (response.body() != null ? Arrays.toString(response.body()) : "null")); 
} 

@Override 
public void onFailure(Call<Direction[]> call, Throwable t) { 
    t.printStackTrace(); 
} 
} 

答えて

0

内部クラスもここに関与しているようです。例外トレースの$ 1。リフレクションを使用して内部クラスまたはそのフィールドのいずれかにアクセスしようとする場合は、次のように$ signを使用する必要があります。

Class c = Class.forName("MainClassName$InnerClassName") 

NoClassDefFoundErrorは、クラスローダーが実行時にクラスの定義を見つけることができない場合にスローされます。

+0

これはどのように可能ですか? – user3626048

+0

クラスパスにはこのクラスがありません。 –

+0

DirectionsTaskから他のメソッドを使用した場合(タイプresultType = .....を呼び出すメソッドではない)、例外はありません。 – user3626048