Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Class.forName可以';t使用默认类装入器装入类_Java_Android_Release_Dex - Fatal编程技术网

Java Android Class.forName可以';t使用默认类装入器装入类

Java Android Class.forName可以';t使用默认类装入器装入类,java,android,release,dex,Java,Android,Release,Dex,我正在用LibGDX开发一款android游戏,有很多类是动态加载的,在apk的发行版中,我无法使用以下方法加载它们: Class.forName(className); 我得到了ClassNotFoundException,分析了apk,我看到dex文件中的类名简化为一个字母,我想这就是我无法加载的原因。LibGDX项目有两部分:core和android,第一部分完成我想要的加载,没有android API dep,他确实是android项目的dep,他将在活动中运行并使用核心的功能 在an

我正在用LibGDX开发一款android游戏,有很多类是动态加载的,在apk的发行版中,我无法使用以下方法加载它们:

Class.forName(className);
我得到了
ClassNotFoundException
,分析了apk,我看到dex文件中的类名简化为一个字母,我想这就是我无法加载的原因。LibGDX项目有两部分:core和android,第一部分完成我想要的加载,没有android API dep,他确实是android项目的dep,他将在活动中运行并使用核心的功能

在android项目中,我可以在onCreate中使用以下示例代码加载类:

    try {
        Class clazz = Class.forName("game.ui.TreasureChest");
        TreasureChest chest = (TreasureChest)clazz.newInstance();
        chest.update(0.0f);
    }catch(Exception ex){
        Log.v("loadClassses", "exception: " + ex.getMessage());
    }
这段代码也不例外,显然这两个项目使用不同的类加载器,android版本专门用于这个dex文件。 此代码不起作用:

        Class clazz = Class.forName("game.ui.TreasureChest", true, this.getClass().getClassLoader());
为什么会这样? 在android文档中,据说第一个示例与第二个示例等效,因此不应该有例外

还有另一种方法可以加载这些类吗?
我想在一个界面中,android项目将实现按名称加载给定类,但forName方法的两种变体在界面中都不起作用。

我找到了问题的根源,一段时间后,我在查看gradle构建文件时,看到了这一行:

minifyEabled true
我很久以前就把它放在那里了,这是minifed名称的原因,然后类加载器找不到类,删除它使一切正常