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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题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)

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

3 个回复

正序浏览
我用的ECILPSE,不是放在和class同一个包里啊?放在整个工程里啊?那如果放在同一个包里可以吗?方同一个放里路径那怎么写?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
如果是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!");  
    }  
}  

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
楼楼 用的是ECILPSE还是直接命令行编译的啊 Eclipse是在工程文件夹下面我记得
命令行的直接就在java目录就好0 0。。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

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