有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java类仅在安卓 6.0上找不到+

Android 6.0+找不到在同一个应用程序中编译的类,而是在另一个模块/库中编译的类

例如:

com。实例应用程序(默认应用程序包)

com。实例lib(库编译)

当我使用反射从应用程序默认包调用某个类时,它只在安卓版本6之前有效

安卓4.4.2(工作)

Class.forName("com.example.lib.SomeClass");

Android 6.0(失败ClassNotFoundException)

Class.forName("com.example.lib.SomeClass");

共 (1) 个答案

  1. # 1 楼答案

    当某个类加载的类加载器与应用程序类加载器(加载类的类加载器)不同时,通常会发生这种情况。潜在原因可能是您有多个dex文件,或者您正在使用instant run,因此Android将使用多个类加载器来加载应用程序中的所有类

    如果将库添加为编译依赖项,通常应该能够使用SomeClass引用/获取它。类,而不是类。forName(“com.example.lib.SomeClass”)。如果这是不可能的,您需要以某种方式获得加载了某个类的类加载器,并调用类加载器。findClass(“com.example.lib.SomeClass”)