2015-04-22 5 views
-1

Я пытаюсь прочитать файл «DB_Config_File.properties», но по какой-то причине следующее сообщение об ошибке: протекающиеReading Config File Contents

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 

Мой класс, который обрабатывает чтение конфигурационного файла выглядит как следующее:

общественный класс базы данных {

public static Connection conn; 
public static void dbConnection() throws FileNotFoundException, IOException, ClassNotFoundException, SQLException { 

     Properties props = new Properties(); 
     driver = props.getProperty("driver"); 
     String url = props.getProperty("url"); 
     String username = props.getProperty("username"); 
     String password = props.getProperty("password"); 
     String configFile = "F:/Project/Java Project/src/mainScreen/DB_Config_File.properties"; 

     InputStream ins = new FileInputStream(configFile); 
     props.load(ins); 
     Class.forName(driver); 


     conn = DriverManager.getConnection(url, username, password); 

}

Судя по ошибке, я предполагаю, что что-то не так в части «Class.forName (driver)».

Не могли бы вы помочь мне здесь?

Благодаря

+0

Ваш код выглядит нелогичным. – leppie

+0

Не могли бы вы добавить более подробные stacktrace? В вашем коде есть 'java.lang.NullPointerException', но мы не можем сделать вывод о том, какая точка поднимает это исключение. – EAA

ответ

0

Вы загружаете файл свойств из входного потока после того, как вы читаете значения из него. Переменная «driver» имеет значение null, поскольку свойства пустые и вызывает NPE.

+0

Бинго! Я новичок в этом, так что мои глупые ошибки :). – highdef

+0

Пока мы на нем ... Как я могу прочитать указанный файл свойств без вставки всего пути (F:/Project/Java Project/src/mainScreen/DB_Config_File.properties). Я имею в виду, есть ли способ, чтобы я мог прочитать файл из иерархии классов, просто вставив файл свойств? – highdef

+0

Вы можете загрузить его из [classpath] (http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream (java.lang.String) или пройти путь через командную строку. Существуют также библиотеки, такие как [Archaius] (https://github.com/Netflix/archaius), которые могут сделать для вас какую-то магию. –