Android java无法加载类

Android java无法加载类,java,android,loader,dex,Java,Android,Loader,Dex,嗨,我无法在我的android应用程序中加载类,我可以加载基本类,但当我在该类中初始化上下文时,我无法加载它 public class main { // Initalize context Context mContext; public main(Context mContext){ this.mContext = mContext; } public boolean main() { Log.d("MYLOG", "main() c

嗨,我无法在我的android应用程序中加载类,我可以加载基本类,但当我在该类中初始化上下文时,我无法加载它

public class main {
    // Initalize context
    Context mContext;
    public main(Context mContext){
        this.mContext = mContext;
    }
    public boolean main() {
 Log.d("MYLOG", "main() called successfully when there context is not initialized like above");
// some code here  
}
}
我的类加载代码

try{
     final File tmpDir = context.getDir("dex", 0);
     final DexClassLoader classloader = new DexClassLoader(libPath, tmpDir.getAbsolutePath(), null, this.getClass().getClassLoader());
     final Class<Object> classToLoad = (Class<Object>) classloader.loadClass("com.myproject.test.dumy_class");   // package plus main class
     final Object myInstance = classToLoad.newInstance();       // throwing exception here 
}
    } catch (Exception e) {
// exception thrown at that statement :   final Object myInstance = classToLoad.newInstance(); 
}
试试看{
最终文件tmpDir=context.getDir(“dex”,0);
final DexClassLoader classloader=新的DexClassLoader(libPath,tmpDir.getAbsolutePath(),null,this.getClass().getClassLoader());
最终类classToLoad=(类)classloader.loadClass(“com.myproject.test.dumy_Class”);//包加主类
最终对象myInstance=classToLoad.newInstance();//在此处引发异常
}
}捕获(例外e){
//在该语句处引发异常:最终对象myInstance=classToLoad.newInstance();
}
我得到的例外:

java.lang.InstanceionException:无法实例化类 com.myproject.test.dumy_class;没有空构造函数

public main(Context mContext)

因此,请提供帮助。

您需要在Java类中创建一个空构造函数:

public class main {
    // Initalize context
    Context mContext;

    public main(){
    }

    public main(Context mContext){
        this.mContext = mContext;
    }
    public boolean main() {
       Log.d("MYLOG", "main() called successfully when there context is not initialized like above");
        // some code here  
    }
}
这将只调用空构造函数,这可能不是您想要的

或者,您需要选择所需的构造函数,并向newInstance调用添加一个参数(请参见),如下所示:

所以你的非空构造函数

public main(Context mContext)

调用。

有什么例外?请添加整个跟踪@MartinKonecny我已经编辑了代码,我用try{}将代码括起来,所以当它达到这个状态时就会出现问题:final Object myInstance=classToLoad.newInstance()@MartinKonecny异常:java.lang.实例化异常:无法实例化类com.myproject.test.dumy_类;无空构造函数您需要添加默认(空)构造函数,或选择所需的构造函数。我已经在我的回答中发布了详细的回复