黑马程序员技术交流社区

标题: 急!请各位大神帮忙解决下。 郁闷了好久 [打印本页]

作者: 楚风★憧憬    时间: 2014-5-28 20:05
标题: 急!请各位大神帮忙解决下。 郁闷了好久
/*
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)
作者: のソ夏末    时间: 2014-5-28 20:39
配置文件里面应该设置成类的完整名称:
ClassName = cn.itcast.heima.DemoClass
作者: Aron    时间: 2014-5-29 00:41
你看下你那个配置文件的路径写对没有  如果是在在src下面  你的名字前面需要加一个"\" 不然路径不对会报找不到错误  如果还有错你再看看报的什么错 给我说下我帮你弄
作者: pandapan    时间: 2014-5-29 06:12
同意二楼的说法,
三楼的帅哥,如果是你说的情况下的话,应该不会抛出这样的异常,直接在读取配置文件时就应该报错的.
作者: 果粒橙Cc    时间: 2014-5-29 06:18
高手在民间,一点不假
作者: 古陵逝烟    时间: 2014-5-29 07:31
大隐隐于市
作者: 楚风★憧憬    时间: 2014-5-29 19:48
还是显示类没有找到java.lang.ClassNotFoundException: cn.itcast.heiima.DemoClass 我觉得应该是代码哪里写错了 要是文件路径写错了 会报“系统找不到指定文件”看报的错读到配置文件了找不到被调用的类,麻烦哪位大哥帮忙把代码测试下
作者: 楚风★憧憬    时间: 2014-5-29 19:50
Aron 发表于 2014-5-29 00:41
你看下你那个配置文件的路径写对没有  如果是在在src下面  你的名字前面需要加一个"\" 不然路径不对会报找 ...

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

你按照二楼的方法试一试 看还有问题没 我最开始没看仔细额
作者: 楚风★憧憬    时间: 2014-5-29 23:51
Aron 发表于 2014-5-29 22:29
你按照二楼的方法试一试 看还有问题没 我最开始没看仔细额

解决了 谢谢你啊

作者: Aron    时间: 2014-5-30 17:21
楚风★憧憬 发表于 2014-5-29 23:51
解决了 谢谢你啊

没事 加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2