在Java自定义类装入器中调用findClass时指定类名

在Java自定义类装入器中调用findClass时指定类名,java,class,Java,Class,在customer类装入器中,我有一个findClass方法,如下所示: public Class findClass(String className){ byte classByte[]; Class result=null; result = (Class)classes.get(className); if(result != null){ return result; } try{ return fi

在customer类装入器中,我有一个findClass方法,如下所示:

 public Class findClass(String className){
    byte classByte[];
    Class result=null;
    result = (Class)classes.get(className);
    if(result != null){
        return result;
    }


    try{
        return findSystemClass(className);
    }catch(Exception e){
    }
    try{
       String classPath =    
  ((String)ClassLoader.getSystemResource(className.replace('.',File.separatorChar)+".class").getFile()).substring(1);
       classByte = loadClassData(classPath);
        result = defineClass(className,classByte,0,classByte.length,null);
        classes.put(className,result);
        return result;
    }catch(Exception e){
        return null;
    } 
}

如果某个类在默认包中,如何指定要查找的该类的名称。例如,如果类名为
myclass.class
,如何将此名称传递给此方法。将其称为
findClass(“myclass”)
findClass(“myclass.class”)
似乎不起作用

很可能是由于您提供的名称有问题,请确保它有正确的包前缀

给定类似“java.lang.string”的字符串的方法将查找文件“java/lang/string.class”(在unix文件系统上)。您可能需要检查要加载的类的文件夹目录/包名称

它是用点分隔的包名,然后是类名,例如:

 Class.forName("java.lang.String");


请尝试使用完全限定名:
findClass(“mypackage.MyClass”)

findClass(“mypackage.MyClass”)
由于该类位于默认包中,因此没有要指定的包。这个类在一个罐子里。如果jar是“Myjar.jar”,而类是“Myclass.class”,那么如果该类不在默认包之外的包中,我将如何指定该类的名称。因为该类在默认包中,所以没有要指定的包。这个类在一个罐子里。如果jar是“Myjar.jar”,而类是“Myclass.class”,那么如果类不在默认包之外的包中,我将如何指定该类的名称。
Class.forName("myclass");