2014-01-28 6 views
0

Я пытаюсь прочитать некоторые реквизиты от backupData.properties. Он находится в WEB-INF/classes/. Это, как я:FileNotFoundException с файлом свойств

public class Configures { 

    private static final String INPUT_FILE = "WEB-INF//classes//backupData.properties"; 


    public static String getMail() { 
     Properties prop = new Properties(); 
     try { 
      //load a properties file 
      prop.load(new FileInputStream(INPUT_FILE)); 

      //get the property value 
      return prop.getProperty("mail"); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
     return null; 
    } 
} 

Что INPUT_FILE должен содержать? Я пытался положить его в src, как src//backupData.properties, но он выбрасывает FileNotFoundException. Я googled, что файл должен найти в CLASSPATHWEB-INF/classes, как я понял). Что не так?

PS. Я использую Spring.

+0

Вы проверяете с абсолютным путем ?? – Kick

ответ

2

Это не имеет никакого отношения к весне. Если вы развертываете веб-приложение, все в WEB-INF/classes появится, начиная с корня пути к классам.

Вы можете получить его в InputStream к этому ресурсу с

InputStream in = Configures.class.getResourceAsStream("/backupData.properties"); 
prop.load(in); 

Поскольку веб-приложение не всегда извлекается из его файла .war, фактические свойства файла может существовать только в виде записи на молнии. Таким образом, вы не можете (и не должны) извлекать его с помощью FileInputStream.

Here's the javadoc.

+0

Я не думаю, что вы хотите слэш в имени. – jalynn2

+0

@ jalynn2 Почему ты так не думаешь? –

+0

, потому что он находится в корне пути класса? – jalynn2

1

Поскольку вы используете SPRING, я предлагаю вам "CAN" использовать это как часть вашего определения Bean:

<property name="template" value="classpath:/backupData.properties"> 

или

Resource template = ctx.getResource("classpath:/backupData.properties"); 

или обычный старый, как предложенный @Sotirios Delimanolis

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