2014-10-06 2 views
0

Я написал класс, который загружает внешние свойства для использования в моей программе, он смоделирован по этой ссылке: Load Properties File in Singleton Class. Я читал здесь (FileNotFoundException with properties file) и здесь (Java Properties File not loading) о том, как загрузить внешний файл свойств, однако я продолжаю получать исключение FileNotFoundException. Мой файл свойств является внешним и находится в том же каталоге, что и моя исполняемая банка.Java - Загрузка внешних свойств File - FileNotFoundException

ExternalProperties общественного класса расширяет свойства {

private static ExternalProperties instance = null; 
private Properties properties; 
private static String location; 

protected ExternalProperties() throws IOException { 
    properties = new Properties(); 
    properties.load(getClass().getResourceAsStream("test.properties")); 
} 

public static ExternalProperties getInstance(){ 
    if(instance == null){ 
     try{ 
      instance = new ExternalProperties(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return instance; 
} 

public static void setLocation(String path){ 
    location = path; 
} 

}

Я передаю местоположение файла свойств с помощью командной строки, такие как:

Java -jar шеф-развертывают-тесты -0.0.0009-SNAPSHOT-jar-with-dependencies.jar test.properties

Любые предложения о том, что я делаю неправильно?

ответ

0

Это зависит от вашего местоположения файла test.properties.

* <li> If the name begins with a {@code '/'} 
* then the absolute name of the resource is the 
* portion of the name following the {@code '/'}. 
* 
* <li> Otherwise, the absolute name is of the following form: 
* 
* <blockquote> 
* {@code modified_package_name/name} 
* </blockquote> 
* 
* <p> Where the {@code modified_package_name} is the package name of this 
* object with {@code '/'} substituted for {@code '.'}. 
0

Я думаю, что ваша проблема заключается в том, что test.properties НЕ находится на вашем пути к классу. То, как вы его запускаете, - это просто передать файл в качестве аргумента в приложение. Я думаю, что вы хотите добавить его в путь к классу приложения:

java -jar chef-deploy-tests-0.0.0009-SNAPSHOT-jar-with-dependencies.jar -classpath.

Включает в себя все файлы в текущем каталоге в пути класса java. Другой вариант может заключаться в том, чтобы поместить этот файл test.properties в отдельный каталог и указать его вместо «.».

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