[英]Android 5.x ClassNotFoundException works fine on 6.0+
[英]Class not found only on android 6.0+
Android 6.0+找不到在同一应用中但在另一个模块/库中编译的类。
例:
com.example.app (默认应用包)
com.example.lib (库编译)
当我使用反射从应用程序默认包中调用某些类时,它仅适用于6之前的android版本
Android 4.4.2(WORKS)
Class.forName("com.example.lib.SomeClass");
Android 6.0(FAILS ClassNotFoundException)
Class.forName("com.example.lib.SomeClass");
当SomeClass加载的ClassLoader与应用程序类加载器(加载Class )不同时,通常会发生这种情况。 可能的原因可能是您有多个dex文件,或者您使用的是即时运行,因此Android将使用多个ClassLoader来加载应用程序中的所有类。
如果您将库添加为编译依赖项,则通常应该可以在代码中使用SomeClass.class而不是Class.forName(“ com.example.lib.SomeClass”)来引用/获取它。 如果不可能,则需要以某种方式获取已加载SomeClass的ClassLoader并调用classLoader.findClass(“ com.example.lib.SomeClass”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.