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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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, 下载次数: 46)

项目册层级图

项目册层级图

36 个回复

倒序浏览
给力  给力  给力
回复 使用道具 举报
卢起 发表于 2016-5-8 18:45
给力  给力  给力

哎。。找不到解决的方法。。
回复 使用道具 举报
哇~~~~~~~
回复 使用道具 举报
你的文件db.properties必须跟 DBUtil类在同一目录下,因为你是使用DBUtil类的字节码文件类来获取文件的输入流的,所以要求文件跟类在同一目录中
回复 使用道具 举报
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的类文件路径。。这里出了问题。。

点评

嗯,正解。。!  发表于 2016-5-21 13:46
回复 使用道具 举报
没想到什么方法
回复 使用道具 举报
把db.properties放到src下
回复 使用道具 举报
董志立 发表于 2016-5-8 19:42
如果是放在同一目录下,那样操作的话,也是有问题啊。。这里是用Eclipse操作的。。所有的classpath的编译 ...

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

已经放在src下。。了。。这个。。。
回复 使用道具 举报
看不懂,好高大上的感脚!
回复 使用道具 举报
看不懂。。
回复 使用道具 举报
xiaogui 来自手机 中级黑马 2016-5-8 21:56:11
14#
帮忙顶一下,顺便学习一下。
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶顶顶顶顶大大大
回复 使用道具 举报
可以装一个中文版的 对比一下试一下
回复 使用道具 举报
表示鸭梨很大,正在学习
回复 使用道具 举报
你的文件db.properties必须跟 DBUtil类在同一目录下,因为你是使用DBUtil类的字节码文件类来获取文件的输入流的,所以要求文件跟类在同一目录中
回复 使用道具 举报
总结的很好,给力的。支持一下辣。
回复 使用道具 举报
加油加油!!!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马