JNI Okhttp内部类方法与NoSuchMethodError



我正在尝试使用构建器对象访问OkHttpClient.Builder方法,但我在Android中获得java.lang.NoSuchMethodError exception

我的代码

//okHttpClient
jclass okHttpClassBuilderClass =env->FindClass("okhttp3/OkHttpClient$Builder");
jmethodID initBuilder =  env->GetMethodID(okHttpClassBuilderClass, "<init>", "()V");
jobject okHttpClassBuilder = env->NewObject(okHttpClassBuilderClass, initBuilder);
jclass timeUnitClass = env->FindClass("java/util/concurrent/TimeUnit");
jfieldID timeUnitClassMethod =  env->GetStaticFieldID(timeUnitClass, "MILLISECONDS", "Ljava/util/concurrent/TimeUnit;");
jobject timeUnitObject = env->GetStaticObjectField(timeUnitClass,timeUnitClassMethod);
jlong timeout =5000;
jmethodID setConnTimeoutMethod = env->GetMethodID(okHttpClassBuilderClass, "connectTimeout", "(J;Ljava/util/concurrent/TimeUnit;)Lokhttp3/OkHttpClient$Builder;");
okHttpClassBuilder =env->CallObjectMethod(okHttpClassBuilder,setConnTimeoutMethod,timeout,timeUnitObject);

这里是错误

JNI DETECTED ERROR IN APPLICATION: JNI CallObjectMethodV called with pending exception java.lang.NoSuchMethodError: no nonstatic method "Lokhttp3/OkHttpClient$Builder;.connectTimeout(J;Ljava/util/concurrent/TimeUnit;)Lokhttp3/OkHttpClient$Builder;">

在错误我得到错误像JNICallObjectMethodV调用,但在代码中,我使用CallObjectMethod

我错过了什么?

我不是这方面的专家,但是javap建议您使用额外的;

public final okhttp3.OkHttpClient$Builder connectTimeout(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)Lokhttp3/OkHttpClient$Builder;

最新更新