如下代码:
package com.abstractFactoryPattern;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class XMLUtil {
public static Object getBean() {
try {
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document document;
document = builder.parse(new File("/home/leon/workspace/patternArt/src/com/abstractFactoryPattern/config.xml"));
NodeList nlList = document.getElementsByTagName("className");
Node classNode = nlList.item(0).getFirstChild();
String cNameString = classNode.getNodeValue().trim();
Class class1 = Class.forName("com.abstractFactoryPattern."+cNameString);
Object object = class1.newInstance();
return object;
} catch (Exception e) {
e.printStackTrace();//: handle exception
return null;
}
}
}
第一次写时,Config.xml 没有加绝对路径进去,这里用的是绝对路径,如何用相对路径?
说重点:classNotFoundException 错误,上面代码之前是从书上抄过来的,遇到此问题才发现书也是有可能存在错误的。
forname() 这里面的要包含包名和类名,不然就会报 ClassNotFoundException 错误