黑马程序员技术交流社区

标题: 关于Eclipse中类文件路径的使用问题 [打印本页]

作者: 董志立    时间: 2016-5-8 16:36
标题: 关于Eclipse中类文件路径的使用问题
public class DBUtil {
        static Properties properties;
        static {
                try {
                        properties = new Properties();
                        // 去加载配置文件
                           Class clazz = DBUtil.class;
                        // 该方法使用的就是类文件路径 / 代表了classpath的路径的根目录
                        InputStream inputStream = clazz.getResourceAsStream("/db.properties");
                        properties.load(inputStream);
                        // properties.load(new FileReader("db.properties")); // 此时使用的是相对路径
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

        public static void main(String[] args) {
                System.out.println("当前路径: " + new File(".").getAbsolutePath());
                System.out.println("用户名:" + properties.getProperty("userName") + ",密码:"
                                + properties.getProperty("password"));
        }

}
这个总是报问题空指针异常。。如果我使用cmd操作没有问题。。这个不知道怎么回事??



QQ截图20160508163404.png (12.25 KB, 下载次数: 44)

项目册层级图

项目册层级图

作者: 卢起    时间: 2016-5-8 18:45
给力  给力  给力
作者: 董志立    时间: 2016-5-8 18:47
卢起 发表于 2016-5-8 18:45
给力  给力  给力

哎。。找不到解决的方法。。
作者: wwe812    时间: 2016-5-8 18:49
哇~~~~~~~
作者: HackSon    时间: 2016-5-8 19:36
你的文件db.properties必须跟 DBUtil类在同一目录下,因为你是使用DBUtil类的字节码文件类来获取文件的输入流的,所以要求文件跟类在同一目录中
作者: 董志立    时间: 2016-5-8 19:42
HackSon 发表于 2016-5-8 19:36
你的文件db.properties必须跟 DBUtil类在同一目录下,因为你是使用DBUtil类的字节码文件类来获取文件的输入 ...

如果是放在同一目录下,那样操作的话,也是有问题啊。。这里是用Eclipse操作的。。所有的classpath的编译后的都在bin下。这边如果放在同一目录下,也就是需要放在bin/cn/soap/path/db.properties这样子了。。代码也修改为clazz.getResourseAsStream("db.properties");可是这需要手动放在这边;如果使用相对路径的话,properties.load(new FileReader("db.properties"));这个也可以。。
但是我想要的是classpath的类文件路径。。这里出了问题。。
作者: xzmly111    时间: 2016-5-8 19:56
没想到什么方法
作者: 刘凯强    时间: 2016-5-8 20:33
把db.properties放到src下
作者: HackSon    时间: 2016-5-8 20:34
董志立 发表于 2016-5-8 19:42
如果是放在同一目录下,那样操作的话,也是有问题啊。。这里是用Eclipse操作的。。所有的classpath的编译 ...

你说你想要的是classpath的类文件路径,使用clazz.getResourseAsStream("/db.properties");确实也是从类路径下加载文件,但是你的db.properties文件放在了当前项目目录中,这样肯定也是空指针异常的啊。还有,你使用properties.load(new FileReader("db.properties"));的作用就是从当前项目目录中加载文件的,那当然是可以的啦
作者: shaoxuzhen1234    时间: 2016-5-8 20:35
给力.....加油....加油
作者: 董志立    时间: 2016-5-8 20:47
刘凯强 发表于 2016-5-8 20:33
把db.properties放到src下

已经放在src下。。了。。这个。。。
作者: LexBurner    时间: 2016-5-8 21:31
看不懂,好高大上的感脚!
作者: Sunshine_boy..    时间: 2016-5-8 21:33
看不懂。。
作者: xiaogui    时间: 2016-5-8 21:56
帮忙顶一下,顺便学习一下。
作者: yuanzhen    时间: 2016-5-8 22:09
顶顶顶顶顶顶顶顶顶顶顶顶顶顶大大大
作者: 张奥杰    时间: 2016-5-8 22:44
可以装一个中文版的 对比一下试一下
作者: SilentMax    时间: 2016-5-8 22:49
表示鸭梨很大,正在学习
作者: NeXtyin    时间: 2016-5-8 22:55
你的文件db.properties必须跟 DBUtil类在同一目录下,因为你是使用DBUtil类的字节码文件类来获取文件的输入流的,所以要求文件跟类在同一目录中
作者: taoshan    时间: 2016-5-9 08:36
总结的很好,给力的。支持一下辣。
作者: 陈军舰    时间: 2016-5-9 10:53
加油加油!!!
作者: lijian    时间: 2016-5-9 13:45
帮忙顶一下
作者: 长乐    时间: 2016-5-9 15:27
我也来围观下
作者: taoshan    时间: 2016-5-10 07:56
顶一下楼主了,支持是一种美德。
作者: zhxz521    时间: 2016-5-10 08:04
顶帖是种美德
作者: 12138    时间: 2016-5-10 10:59
学习学习!!
作者: Q灬先生    时间: 2016-5-10 22:31
挺详细的!~~~
作者: lksirt    时间: 2016-5-11 19:14
学习学习                                
作者: sty15193    时间: 2016-5-11 22:43
游客,顶一下
作者: hlh    时间: 2016-5-11 22:50
这个写try catch 调试一下
作者: afjzwed    时间: 2016-5-11 22:53
额,我也不知道
作者: 安东诺夫    时间: 2016-5-11 22:57
本来是想回答装一下蒜,结果看见反射还没学。。。。只有做个旁观者了
作者: Jason.wang    时间: 2016-5-11 23:33
真心的看不懂
作者: 新人救济    时间: 2016-5-12 00:10
没学到了,等学到了回来在看看!!!!
作者: ffx    时间: 2016-5-12 00:31
6666666666666666666666666666
作者: 许霖彧    时间: 2016-5-12 01:06
加油啊 赞赞赞赞赞
作者: sywy328826    时间: 2016-5-12 13:32
大神呐都是!!!




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