我有一个包含几个东西的HashMap(HashMap的内容如下所示(。当我将依赖类名存储在变量中(假设依赖类名(并将其作为参数发送到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();
}
dependencyClassName1= dao.AcountMasterDAO
您在值中有一个前导空格。