2013-08-15 4 views
0

Я пытаюсь прочитать файл свойств в отдельном файле класса GetConfigProperties и передать значение главной функции «LoginTest.java». Но я не могу получить ожидаемое значение свойства, и в коде также нет ошибок.Чтение значений из файла свойств

У меня есть файл свойства в SRC/config.properties У меня есть основная функция в И/com.automation.test -> LoginTest.java У меня есть функция Java, чтобы прочитать файл свойств в И/com.library .helper -> GetConfigProperties.java

Мой код для чтения свойства настроек приводится ниже

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Properties; 

public class GetConfigProperties { 

//protected File file = new File("config.properties"); 
protected static Properties props = new Properties(); 
InputStream is = GetConfigProperties.class.getResourceAsStream("/config.properties"); 

    public static String extractUrlData(){ 
    String webUrl = props.getProperty("webUrl"); 
    return webUrl; 
    } 
} 

- Кроме того, я импортировал этот файл класса в главном LoginTest.java и попытаться получить доступ к получить данные как GetConfigProperties.ExtractUrlData(), но не удались.

P.S - Я рассмотрел многие вопросы и ответы, и поскольку я совершенно не знаком с Java, я не могу понять их, поскольку все кажется уникальным.

+1

Для того, чтобы быть экологически независимыми, вы должны получить его из classpath, а не из файловой системы. – BalusC

+0

Определите «Я не в состоянии». Что происходит, когда вы запускаете код? Чего вы ожидаете? Что такое код, использующий этот класс? Почему вы инициализируете статическое поле класса из конструктора этого же класса? –

+0

@JBN: это не конструктор, просто плохо названный метод (что еще хуже). Кстати, удивительно (и грустно), что пользователь 12K и 3K с '[java]' как свой верхний тег даже не знал, как получить поток ввода простого ресурса из класса path загрузчиком класса. – BalusC

ответ

1

Вот как получить доступ к свойствам:

GetConfigProperties.ExtractUrlData(); 

Это вызывает метод статическийExtractUrlData() (который должен называться extractUrlData() соответствовать Java именования). Нигде не вызывается метод GetConfigProperties()GetConfigProperties, в котором находится объект Properties.

Вы должны выбрать: либо свойства статична, и она должна быть заполнена при загрузке класса, статическим методом или статический блок:

private static Properties props = createAndPopulateProperties(); 

или это должно быть поле экземпляра, который может быть заполнен конструктором класса или одним из его методов экземпляра, который инициализирует объект.

Другая проблема заключается в том, что существует очень низкая вероятность того, что пользователь, запускающий приложение, имеет файл в той же папке, что и вы (если он даже работает с Windows). Вы должны связать свойства файла с .class файлов приложения (в том же банке, или в том же каталоге), а также использовать загрузчик класса для загрузки ресурса:

InputStream is = GetConfigProperties.class.getResourceAsStream("/config.properties"); 
+0

Многие благодарны JBN. Я удалил этот плохой методNamedmethod полностью, поскольку он не является требуется теперь и заменил их на InputStream. Но не могли бы вы сообщить мне, что мне делать теперь, чтобы восстановить значение на основе ключевого слова .. в моем случае нужно извлечь «http://google.com» с помощью «webUrl», ** PS - Я изменил свое начальное описание вопроса, чтобы отразить последние изменения. – Vinee

+0

Вы забыли загрузить свойства из входного потока: 'props.load (is)'. –

+0

Спасибо JBN. – Vinee

Смежные вопросы