关于Class.forname()函数出现异常java.lang.ClassNotFoundException

关于Class.forname()函数出现异常java.lang.ClassNotFoundException
出现这个错误的时候网上查了好久的博客,这里直接把解决过程记录下来

很多大牛说了关于forname这个类的解释,需要可以去查。以我遇到的情况为例,代码基本来源于书上,但是最后出现这个错误。书毕竟不一定完全正确,偶尔犯的小错误可以容忍
贴出代码:

package test81;
//配置文件处理类
import javax.xml.parsers.*;

import org.w3c.dom.*;
import java.io.*;
import java.lang.Class;
import java.lang.Object;
public class XmlUtil {

    public static Object getBean(){
        try{
            DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = dFactory.newDocumentBuilder();
            Document doc;
            doc = builder.parse(new File("Shipeiqi.xml"));

            NodeList nl = doc.getElementsByTagName("classname");
            Node classNode = nl.item(0).getFirstChild();
            String cName = classNode.getNodeValue();
            //System.out.println(cName);
            Class c=Class.forName(cName);
            Object obj=c.newInstance();
            return obj;

        }
        catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

然后注意两个地方:

1、doc = builder.parse(new File(“Shipeiqi.xml”));
2、Class c=Class.forName(cName);

第一个可以用绝对路径也可以用相对路径,关键在于第二点如果我们需要返回得到的是一个字符串就可行,但是如果需要返回的是一个类这样写就会出现如上错误。这里将其换成如下:

2、Class c=Class.forName(“test81.”+cName);

引号内为本类所在的包名,别忘记后面的小黑点,因为我们在客户端测试时如果需要获取的是一个类,就需要这样的方式,如下客户端代码:

//客户端测试类
public class Client {
    public static void main(String[] args)
    {
        //Dog dog;
        Robot robot;
        robot=(Robot)XmlUtil.getBean();
        robot.cry();
    }
}

只要2正确了,那么1的路径其实不会影响运行。这是Class.forname()函数的用法决定的。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值