gpt4 book ai didi

java - NoSuchMethodException 取决于执行时间

转载 作者:行者123 更新时间:2023-11-29 19:23:12 28 4
gpt4 key购买 nike

我有一个 Android 应用程序。我正在使用反射来调用 CookieManager 的方法。

我在做什么:

if (Build.VERSION.SDK_INT >= 21) {
Method method;
method = CookieManager.class.getClass().getMethod("setAcceptFileSchemeCookies", boolean.class);
method.setAccessible(true);
method.invoke(null, true);
}

基本上这个方法是静态的。您可以在这里查找:https://developer.android.com/reference/android/webkit/CookieManager.html#allowFileSchemeCookies()

所以我可以在任何地方调用它,而无需启动 CookieManager。 (这甚至是计划,因为您只能在启动 CookieManager 之前设置此属性)

有什么异常(exception):

java.lang.NoSuchMethodException: setAcceptFileSchemeCookies [boolean]
at java.lang.Class.getMethod(Class.java:624)
at java.lang.Class.getMethod(Class.java:603)
at com.sample.app.CookieClass.setup(CookieClass.java:168)
at java.lang.reflect.Method.invoke(Native Method)
at com.sample.app.Application.onCreate(Application.java:111)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1036)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4728)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

问题是:

现在有趣的部分来了。当我在 Application 类的 onCreate 方法中调用它时,它失败并出现此异常。但是当我稍后在我初始化 CookieManager 的地方调用它时它起作用了。这怎么可能?反射必须无处不在?为什么在 onCreate 中找不到该方法,即使它 100% 在那里(并且稍后可以使用?)。

最佳答案

CookieManager.class.getClass() 中删除 getClass。您正在 Class 类中查找方法,而不是在 CookieManager 类中。

您似乎在调用公共(public)方法。你不需要反射来做到这一点:

if (Build.VERSION.SDK_INT >= 21) {
CookieManager.setAcceptFileSchemeCookies(true);
}

关于java - NoSuchMethodException 取决于执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953222/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com