黑马程序员技术交流社区

标题: 配置文件系统提示找不到,应该放在哪里? [打印本页]

作者: 一直很安静    时间: 2013-11-26 11:17
标题: 配置文件系统提示找不到,应该放在哪里?
问题3:为什么我编写的类在bin里面,但是Java提示找不到文件
注:我配置文件和类放在同一个包中了
import java.io.*;
import java.util.*;
public class ReflectFrame {
        public static void main(String[] args) throws Exception{
                InputStream ips=new FileInputStream("config.properties");
                Properties prop=new Properties();
                prop.load(ips);
                ips.close();
                String className=prop.getProperty("className");
                Collection c=(Collection)Class.forName(className).newInstance();
                c.add("a");
                c.add("mno");
                System.out.println(c.size());
        }
}
Exception in thread "main" java.io.FileNotFoundException: config.properties (系统找不到指定的文件。)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at reflected.ReflectFrame.main(ReflectFrame.java:7)

作者: RuntimeError!    时间: 2013-11-26 11:29
楼楼 用的是ECILPSE还是直接命令行编译的啊 Eclipse是在工程文件夹下面我记得
命令行的直接就在java目录就好0 0。。
作者: 王雷1    时间: 2013-11-26 11:35
如果是Eclipse的话,你要确定你的报名,下面附上一个我自己写的一个题你看看,应该就能明白了
配置的文件className=com.itheima.DemoClass
下面是代码
public class Test5 {  
    public static void main(String[] args) throws Exception {  
            method1();  
    }  
    public static void method() throws Exception{  
       Properties pro=new Properties();  
      
       //写了相对路径加载Test5.properties   
        //用FileInputStream,这三种路径都可以   
        FileInputStream fis1=new FileInputStream(new File("src/com/itheima/Test8.properties"));  
        FileInputStream fis2=new FileInputStream(new File("/com/itheima/Test8.properties"));  
        FileInputStream fis3=new FileInputStream(new File("com/itheima/Test8.properties"));
      
       pro.load(iss5);//加载properties文件   
       iss5.close();//关闭流   
         
       String path=(String)pro.get("className");//因为我定义的key,我就直接通过可以获取值了   
       System.out.println("-----------"+path);//打印获取出来的value,即类的路径   
       Class<?> cla=Class.forName(path);//通过字符串加载类   
       Method m=cla.getMethod("run");//调用类中的方法   
       m.invoke(null);//执行   
    }  
    public static void method1() throws Exception{  
        Properties p=new Properties();  
        InputStream is=new FileInputStream(new File("src/com/itheima/Test5.properties"));  
        p.load(is);  
        is.close();  
        String className=p.getProperty("className");  
        DemoClass name=(DemoClass)Class.forName(className).newInstance();  
        name.run();  
    }  
}  
class DemoClass {  
    public static void run(){  
       System.out.println("welcome to heima!");  
    }  
}  

作者: 一直很安静    时间: 2013-11-26 11:35
我用的ECILPSE,不是放在和class同一个包里啊?放在整个工程里啊?那如果放在同一个包里可以吗?方同一个放里路径那怎么写?




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