Fatal Exception: java.lang.NoSuchMethodError

huangapple go评论124阅读模式
英文:

Fatal Exception: java.lang.NoSuchMethodError

问题

我正在处理这个问题:

  1. 致命异常:java.lang.NoSuchMethodError
  2. 类别android/net/ConnectivityManager中没有名为getActiveNetwork()的虚拟方法Landroid/net/Network; 或者在它的超类中('android.net.ConnectivityManager'的声明出现在/system/framework/framework.jar:classes2.dex中)

这是我的代码:

  1. public boolean isNetworkAvailable() {
  2. ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  3. if (connectivityManager != null) {
  4. if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
  5. NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
  6. if (capabilities != null) {
  7. if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
  8. return true;
  9. } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
  10. return true;
  11. } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
  12. return true;
  13. }
  14. }
  15. }
  16. }
  17. return false;}

这是堆栈跟踪:

  1. 致命异常:java.lang.NoSuchMethodError:类别android/net/ConnectivityManager中没有名为getActiveNetwork()的虚拟方法Landroid/net/Network; 或者在它的超类中('android.net.ConnectivityManager'的声明出现在/system/framework/framework.jar:classes2.dex中)
  2. at com.olgazelenko.esofer.MainMenu.isNetworkAvailable(MainMenu.java:307)
  3. at com.olgazelenko.esofer.MainMenu.onCreate(MainMenu.java:75)
  4. at android.app.Activity.performCreate(Activity.java:6178)
  5. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
  6. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
  7. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
  8. at android.app.ActivityThread.access$900(ActivityThread.java:177)
  9. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
  10. at android.os.Handler.dispatchMessage(Handler.java:102)
  11. at android.os.Looper.loop(Looper.java:135)
  12. at android.app.ActivityThread.main(ActivityThread.java:5910)
  13. at java.lang.reflect.Method.invoke(Method.java)
  14. at java.lang.reflect.Method.invoke(Method.java:372)
  15. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
  16. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

有人知道如何修复这个问题吗?

英文:

I am dealing with that problem:

  1. Fatal Exception: java.lang.NoSuchMethodError
  2. No virtual method getActiveNetwork()Landroid/net/Network; in class Landroid/net/ConnectivityManager; or its super classes (declaration of 'android.net.ConnectivityManager' appears in /system/framework/framework.jar:classes2.dex)

There is my code:

  1. public boolean isNetworkAvailable() {
  2. ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  3. if (connectivityManager != null) {
  4. if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
  5. NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
  6. if (capabilities != null) {
  7. if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
  8. return true;
  9. } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
  10. return true;
  11. } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
  12. return true;
  13. }
  14. }
  15. }
  16. }
  17. return false;}

there is the stacktrace:

  1. Fatal Exception: java.lang.NoSuchMethodError: No virtual method getActiveNetwork()Landroid/net/Network; in class Landroid/net/ConnectivityManager; or its super classes (declaration of 'android.net.ConnectivityManager' appears in /system/framework/framework.jar:classes2.dex)
  2. at com.olgazelenko.esofer.MainMenu.isNetworkAvailable(MainMenu.java:307)
  3. at com.olgazelenko.esofer.MainMenu.onCreate(MainMenu.java:75)
  4. at android.app.Activity.performCreate(Activity.java:6178)
  5. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
  6. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
  7. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
  8. at android.app.ActivityThread.access$900(ActivityThread.java:177)
  9. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
  10. at android.os.Handler.dispatchMessage(Handler.java:102)
  11. at android.os.Looper.loop(Looper.java:135)
  12. at android.app.ActivityThread.main(ActivityThread.java:5910)
  13. at java.lang.reflect.Method.invoke(Method.java)
  14. at java.lang.reflect.Method.invoke(Method.java:372)
  15. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
  16. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

does someone know how that can be fixed?

答案1

得分: 1

这个错误经常在你使用某个版本的依赖进行编译,但在运行代码时使用了不同版本的情况下出现。

在这里,看起来 com.olgazelenko.esofer.MainMenu.isNetworkAvailable(MainMenu.java:307) 调用了一个来自Android的方法,在你的执行过程中未找到。

这个方法,getActiveNetwork,似乎是在Android SDK API Level 23中添加的。你可能尝试在一个较旧的版本中使用它。请查看 https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetwork()。尝试升级你的 minSdkVersion:https://developer.android.com/guide/topics/manifest/uses-sdk-element。

英文:

This Error occurs often when you have compiled with one version of your dependency but are running the code with a different version.

Here, it looks that com.olgazelenko.esofer.MainMenu.isNetworkAvailable(MainMenu.java:307)
calls a method from android which is not found during your execution.

This method, getActiveNetwork, seemed to be added in Android SDK API Level 23. You maybe try to use it in a older version. see https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetwork(). Try to upgrade your minSdkVersion : https://developer.android.com/guide/topics/manifest/uses-sdk-element

huangapple
  • 本文由 发表于 2020年10月1日 17:36:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/64152677.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定