JNI OKHTTP内类方法与Nosuchmethoderror

发布于 2025-01-25 19:48:34 字数 1573 浏览 2 评论 0原文

我正在尝试使用构建器对象访问okhttpclient.builder方法,但是我在Android中获得了java.lang.lang.lang.lang.lang.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在应用程序中检测到的错误:jni callObjectMethodv呼叫带有例外java.lang.lang.nosuchmethoderror:无静态方法“ lokhttp3/okhttpclient $ builder $ builder; .connecttime; .connecttime out(j; ljava/ljava/ljava/ljava/fitil/concorrent/concorrent/concurrent/concurrent/concurrent/timeunit; $ Builder;“

在错误中,我会遇到错误,例如jni callObjectMethodv nath命名,但在代码中,我正在使用 callobjectmethod

我在此处缺少什么?

I am trying to access OkHttpClient.Builder method using builder object but I am getting java.lang.NoSuchMethodError exception in Android.

Here is my code

//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);

Here is error

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

In error I am getting error like JNI CallObjectMethodV called but in code I am using CallObjectMethod

What I am missing here ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

掐死时间 2025-02-01 19:48:34

这里不是专家,但Javap建议您还有其他。

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

Not an expert here, but javap suggests you have an additional ;

  public final okhttp3.OkHttpClient$Builder connectTimeout(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Lokhttp3/OkHttpClient$Builder;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文