Java 类仅在android 6.0+;

Java 类仅在android 6.0+;,java,android,Java,Android,Android 6.0+找不到在同一个应用程序中编译的类,而是在另一个模块/库中编译的类 例如: com.example.app(默认应用程序包) com.example.lib(库编译) 当我使用反射从应用程序默认包调用某个类时,它只在android版本6之前有效 安卓4.4.2(作品) Android 6.0(失败ClassNotFoundException) 这通常发生在使用不同于应用程序类装入器(装入类的装入器)的类装入器装入某个类时。潜在原因可能是您有多个dex文件,或者您正在使用in

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

例如:

com.example.app(默认应用程序包)

com.example.lib(库编译)

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

安卓4.4.2(作品)

Android 6.0(失败ClassNotFoundException)


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


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

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


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

您可以粘贴应用程序渐变文件吗?它是哪个类?您可以粘贴应用程序渐变文件吗?它是哪个类?
Class.forName("com.example.lib.SomeClass");
Class.forName("com.example.lib.SomeClass");