2016-09-17 73 views
32

我正在使用Retrofit2庫。NoClassDefFoundError:失敗的解決方案:Lokhttp3/internal/Platform

我已經嘗試過更新最新版本:在build.gradle文件Retrofit2,GSON,Rxjava,OKHttp,HttpLoggingInterceptor ...

應用

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',   { 
    exclude group: 'com.android.support', module: 'support-annotations' 
}) 

// Default - Android Component 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:design:24.2.1' 
compile 'com.android.support:appcompat-v7:24.2.1' 

// Retrofit2 + Gson 
compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.google.code.gson:gson:2.6.2' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 
compile 'com.squareup.okhttp3:logging-interceptor:3.3.0' 
compile 'com.squareup.okhttp3:okhttp:3.4.1' 

// RxJva 
compile 'io.reactivex:rxandroid:1.2.0' 
compile 'io.reactivex:rxjava:1.1.4' 
} 

build.grade但我得到錯誤

> Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/internal/Platform; 
at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:112) 
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:160) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
at internal.NetworkModule$1.intercept(NetworkModule.java:150) 

以下代碼

Interceptor provideInterceptor(final Context context, final PreferenceStore preferenceStore) { 
    Interceptor headerAuthorizationInterceptor = new Interceptor() { 
     @Override 
     public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException { 
      // Get Android ID 
      String android_id = Settings.Secure.getString(context.getContentResolver(), 
        Settings.Secure.ANDROID_ID); 

      // Get Application Version 
      String appVersion = ""; 
      try { 
       PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); 
       appVersion = packageInfo.versionName; 
      } catch (PackageManager.NameNotFoundException e) { 
       Timber.e("Cannot get app version"); 
      } 

      /** 
      * Add header with following attributes as agree with Web Server 
      * - Token 
      * - "Android" 
      * - Release version 
      * - Model 
      * - App version 
      * - Android ID 
      */ 
      String token = preferenceStore.getAuthToken(); 

      Timber.i("X-Asukabu-Token: %s", token); 

      // Add header to request 
      Request request = chain.request(); 
      if (token != null) 
       request.headers().newBuilder() 
         .add("X-Asukabu-Token", token) 
         .add("X-Asukabu-Client-OS", "Android") 
         .add("X-Asukabu-Client-OS-Version", Build.VERSION.RELEASE) 
         .add("X-Asukabu-Client-Device", Build.MODEL) 
         .add("X-Asukabu-Client-App-Version", appVersion) 
         .add("X-Asukabu-Client-Device-ID", android_id) 
         .add("Accept","*/*") 
         .build(); 
      else 
       request.headers().newBuilder() 
         .add("X-Asukabu-Client-OS", "Android") 
         .add("X-Asukabu-Client-OS-Version", Build.VERSION.RELEASE) 
         .add("X-Asukabu-Client-Device", Build.MODEL) 
         .add("X-Asukabu-Client-App-Version", appVersion) 
         .add("X-Asukabu-Client-Device-ID", android_id) 
         .add("Accept","*/*") 
         .build(); 

      // ERROR IN THIS LINE : LINE 150 
      return chain.proceed(request); 
     } 
    }; 

    return headerAuthorizationInterceptor; 
} 

build.gradle在項目:

buildscript { 
repositories { 
    jcenter() 
} 
dependencies { 
    classpath 'com.android.tools.build:gradle:2.2.0-rc2' 

    // Dagger 2 
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 

    // NOTE: Do not place your application dependencies here; they belong 
    // in the individual module build.gradle files 
} 
} 

的人誰知道我爲什麼會得到這個錯誤?

請告訴我如何解決它,

謝謝

回答

87

我想,問題就在這裏:

compile 'com.squareup.okhttp3:logging-interceptor:3.3.0' 
compile 'com.squareup.okhttp3:okhttp:3.4.1' 

儘量使是:

compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' 
compile 'com.squareup.okhttp3:okhttp:3.4.1' 
+5

剛在兩個庫中添加相同的版本。 –

+0

它不適合我!我沒有'compile'c​​om.squareup.okhttp3:okhttp:3.4.1'' –

+5

也許,你在另一個庫裏有okhttp庫。可能是改造 –

相關問題