当前位置: 首页 > 知识库问答 >
问题:

NoClassDefFoundError:无法解析:Lokhttp3/internal/Platform

乐正远
2023-03-14

我正在使用库。

我已经尝试更新最新版本:Retrofit2,Gson,Rxjava,OKHttp,HttpLoggingInterceptor...在build.gradle文件

应用程序中的build.grade

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'
}

但我出错了

 > 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;
}

<代码>构建。项目中的渐变:

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
}
}

谁知道我为什么会犯这个错误?

请告诉我如何修复它,

非常感谢。

共有2个答案

濮阳鸿卓
2023-03-14

这就是问题所在https://github.com/square/retrofit/issues/2266

你必须把相同的版本。这是最新版本

implementation 'com.squareup.okhttp3:logging-interceptor:4.7.2'
implementation 'com.squareup.okhttp3:okhttp:4.7.2'
戚飞
2023-03-14

我猜,问题就在这里:

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'
 类似资料:
  • 我试着用android studio安装一个react-native应用程序,安装apk后应用程序就会停止。 以下是带有错误的logcat: 我尝试了很多事情:清洁,重建,...库的版本似乎在任何需要的地方都是一样的,multidex似乎是正确设置的。 你能帮帮我吗? 谢谢!

  • 问题内容: 我的应用程序出现问题,我想创建一个连接到服务器的简单XMPP客户端。启动应用程序时遇到以下问题(编译过程没有问题),但是我的应用程序立即关闭。 但是我不知何故找不到与丢失的“ XmppStringUtils”相关的任何东西 这是第30行中的代码 这些是我的进口 加上我的build.gradle 谢谢 问题答案: 从NoClassDefFoundError的javadoc: 如果Java

  • 我正在使用Amazon的云服务开发一个webapp,我需要使用JSON对象。我的项目是如何设置的,我有一个HTML表单,用户将在其中填写信息并提交。一旦提交,数据将被放入在线数据库,并向他们发送确认电子邮件。在将数据提交到数据库之前,我需要将所有数据放入JSON对象中。我的servlet是用Java完成的,如下所示: 使用此代码提交表单时,会收到以下错误消息: java.lang.NoClassD

  • 问题内容: 这是我在JSP文件中的Java代码。我正进入(状态 无法解析Base64Encoder。 为什么会这样呢?我必须添加与相关的内容。任何建议将不胜感激。 问题答案: 看起来您正在使用Web应用程序中包含的jar中不存在的类。您可以尝试以下吗?如有必要,请进行调整,我只是在查看通用文档,然后将其输入- 转到http://commons.apache.org/codec/index.html

  • 问题内容: 因此,我直接从Google的android网站复制了此教程示例内容,却收到一个错误,指出R.id无法解决。 这是我的Java文件 这是我的 问题答案: 您必须导入您的R类 同样,如需求发布一样,您必须为布局使用名称空间。