Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 为什么在从HashMap检索的类名(带包)通过class.forName()时无法获取该类?_Java_Reflection - Fatal编程技术网

Java 为什么在从HashMap检索的类名(带包)通过class.forName()时无法获取该类?

Java 为什么在从HashMap检索的类名(带包)通过class.forName()时无法获取该类?,java,reflection,Java,Reflection,我有一个HashMap,它包含一些东西(HashMap的内容如下所示)。当我将dependencyClassName存储在变量中(假设dependencyClassName)并将其作为参数发送到Class.forName(),它会显示ClassNotFoundException 但是,如果我在双引号内设置与Class.forName()的参数相同的类名,而不是从HashMap中获取它,则效果很好 我不明白这里有什么问题。我已经把代码贴在下面了 HashMap<String,String&g

我有一个HashMap,它包含一些东西(HashMap的内容如下所示)。当我将dependencyClassName存储在变量中(假设dependencyClassName)并将其作为参数发送到
Class.forName()
,它会显示
ClassNotFoundException

但是,如果我在双引号内设置与
Class.forName()
的参数相同的类名,而不是从HashMap中获取它,则效果很好

我不明白这里有什么问题。我已经把代码贴在下面了

HashMap<String,String> dependency = (HashMap<String, String>) map.get("dependency");  //It contains ({dependencyClassName2= dao.TransactionDAO, dependencyClassName1= dao.AcountMasterDAO, dependencyType1=dao.IAcountMaster, dependencyType2=dao.ITransaction})

ArrayList<Object> className = new ArrayList<Object>();

String dependencyClassName  = dependency.get("dependencyClassName1");

try {

    System.out.println("in factory dependency: " + dependencyClassName);  //dependencyClassName = "dao.AcountMasterDAO"
    Class cls = Class.forName(dependencyClassName);//It gives ClassNotFoundException


    Class cls = Class.forName("dao.AcountMasterDAO");//It works fine    

} 

catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
}
HashMap依赖项=(HashMap)map.get(“依赖项”)//它包含({dependencyClassName2=dao.TransactionDAO,dependencyClassName1=dao.AcountMasterDAO,dependencyType1=dao.IAcountMaster,dependencyType2=dao.ITransaction})
ArrayList className=新的ArrayList();
字符串dependencyClassName=dependency.get(“dependencyClassName1”);
试一试{
System.out.println(“工厂内依赖项:+dependencyClassName);//dependencyClassName=“dao.AcountMasterDAO”
Class cls=Class.forName(dependencyClassName);//它给出ClassNotFoundException
Class cls=Class.forName(“dao.AcountMasterDAO”);//工作正常
} 
catch(classnotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
值中有一个前导空格

dependencyClassName1= dao.AcountMasterDAO