我正在使用以下内容:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
case EDIT_ADJUSTMENT:
if(resultCode == RESULT_OK){
try{
String adjustment = data.getStringExtra("adjustment");
adjustment = adjustment.replace(" ", "");
ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
String classNameToBeLoaded = "com.picpic.adjustments." + adjustment;
Class adjust = myClassLoader.loadClass(classNameToBeLoaded);
}catch(Exception e){
String msg = e.getMessage();
}
}
break;
}
}
当它到达Class adjust = myClassLoader.loadClass(classNameToBeLoaded);
我收到以下异常:java.lang.ClassNotFoundException: com.picpic.adjustments.ColorCorrect
包装为ColorCorrect
is com.picpic.adjustments
那么,为什么会抛出这个错误?如果您需要更多信息,请告诉我。谢谢!
我猜这是因为你的班级对类加载器您试图通过它加载该类。
我建议你尝试一下this.getClass().getClassLoader()
代替ClassLoader.getSystemClassLoader()
.
Java 有一个类加载器层次结构。每个类加载器都有不同的类路径来加载类。由于您尝试加载的类似乎是用户定义的类,因此它可能对返回的类加载器不可见ClassLoader.getSystemClassLoader()
方法。 (您可以尝试谷歌搜索 Java ClassLoader Hierarchy。可能是这样link http://www.objectsource.com/j2eechapters/Ch21-ClassLoaders_and_J2EE.htm如果您之前不知道这一点,这很有用。)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)