A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
5、 已知一个类,定义如下:
   package cn.itcast.heima;
      public class DemoClass {
      public void run()
      {
         System.out.println("welcome to heima!");
      }   
     }
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。





*/


import java.io.*;

import java.util.*;
import java.lang.reflect.*;

public class Test5
{
        public static void main(String[] args)
        {
                InputStream in =null;
                try
                {
                        //定义字符读取流加载文件

                        in= new FileInputStream("Test5.properties");                       
                        //定义properties对象此对象相当于hashMap能从文件里读取键值对;
                        Properties pro = new Properties();

                       

                        pro.load(in);
                        //得到Key
                        String className = pro.getProperty("ClassName");

                        //System.out.println(className);

                        DemoClass name=(DemoClass)Class.forName(className).newInstance();
                        name.run();

                }
                catch (Exception e)
                {
                        throw new RuntimeException(e.toString());
                }

                finally{
                        try
                        {
                                if(in!=null)
                                        in.close();
                        }
                        catch (Exception e)
                        {
                                System.out.println(e.toString());
                        }
                       
               
                }
        }
}


class DemoClass {
      public void run()
      {
         System.out.println("welcome to heima!");
      }   
}

配置文件是 文件名Test5.properties内容是ClassName=DemoClass

测试运行的结果是:Exception in thread "main" java.lang.RuntimeException:java.lang.ClassNotFoundException: DemoClass
at com.itheima.Test5.main(Test5.java:56)

12 个回复

倒序浏览
配置文件里面应该设置成类的完整名称:
ClassName = cn.itcast.heima.DemoClass
回复 使用道具 举报
你看下你那个配置文件的路径写对没有  如果是在在src下面  你的名字前面需要加一个"\" 不然路径不对会报找不到错误  如果还有错你再看看报的什么错 给我说下我帮你弄
回复 使用道具 举报
同意二楼的说法,
三楼的帅哥,如果是你说的情况下的话,应该不会抛出这样的异常,直接在读取配置文件时就应该报错的.
回复 使用道具 举报
高手在民间,一点不假
回复 使用道具 举报
大隐隐于市
回复 使用道具 举报
还是显示类没有找到java.lang.ClassNotFoundException: cn.itcast.heiima.DemoClass 我觉得应该是代码哪里写错了 要是文件路径写错了 会报“系统找不到指定文件”看报的错读到配置文件了找不到被调用的类,麻烦哪位大哥帮忙把代码测试下
回复 使用道具 举报
Aron 发表于 2014-5-29 00:41
你看下你那个配置文件的路径写对没有  如果是在在src下面  你的名字前面需要加一个"\" 不然路径不对会报找 ...

还是显示类没有找到java.lang.ClassNotFoundException: cn.itcast.heiima.DemoClass 我觉得应该是代码哪里写错了 要是文件路径写错了 会报“系统找不到指定文件”看报的错读到配置文件了找不到被调用的类,麻烦哪位大哥帮忙把代码测试下
回复 使用道具 举报
Mr.高 中级黑马 2014-5-29 20:04:13
9#
想解决还要好好学习啊
回复 使用道具 举报
着急的话,直接问老师
回复 使用道具 举报
Aron 中级黑马 2014-5-29 22:29:19
11#
楚风★憧憬 发表于 2014-5-29 19:50
还是显示类没有找到java.lang.ClassNotFoundException: cn.itcast.heiima.DemoClass 我觉得应该是代码哪 ...

你按照二楼的方法试一试 看还有问题没 我最开始没看仔细额
回复 使用道具 举报
Aron 发表于 2014-5-29 22:29
你按照二楼的方法试一试 看还有问题没 我最开始没看仔细额

解决了 谢谢你啊
回复 使用道具 举报
Aron 中级黑马 2014-5-30 17:21:39
13#

没事 加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马