Загрузить файл свойств в Java - PullRequest
1 голос
/ 21 ноября 2011

Всякий раз, когда я пытаюсь загрузить файл свойств описанным ниже способом. Я получаю сообщение об ошибке getClass() as-

Невозможно сделать статическую ссылку на нестатический метод getClass () из типа Object

public static void main(String[] args) {

        ---
        ---

    loadProperties(line);

}

private static void loadProperties(String line) {
        Properties prop = new Properties();
        InputStream in = getClass().getResourceAsStream("foo.properties");
        try {
            prop.load(in);
            for(Object str: prop.keySet()) {
                Object value = prop.getProperty((String) str);
                System.out.println(str+" - "+value);
            }
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

Любые предложения, как я могу преодолеть это.

Ответы [ 4 ]

4 голосов
/ 21 ноября 2011

Вы не можете вызвать getClass из статического метода.Вы должны сделать это нестатическим методом:

class MyClass {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      obj.loadProperties(line);    
   }

   private void loadProperties(String line) {
        Properties prop = new Properties();
        InputStream in = getClass().getResourceAsStream("foo.properties");
        ...  
   }
}

или использовать литерал класса, который работает в статическом контексте, например

InputStream in = MyClass.class.getResourceAsStream("foo.properties");
2 голосов
/ 18 января 2013

Для доступа к файлу свойств, который находится в пути к классу проекта из статического метода usign getClass попробуй как:

import java.io.InputStream;
import java.util.Properties;
import java.io.IOException;
public class HelperClass {
     public static String getProperty() {
        Properties properties = new Properties();
        String wadlURI = "";
           try {
               InputStream inputStream = HelperClass.class.getClassLoader().getResourceAsStream("configuration.properties");
                properties.load(inputStream);
               wadlURI = properties.getProperty("wadlurl");
           } catch (IOException e) {
               e.printStackTrace();
             }
          return wadlURI;
      }
}
0 голосов
/ 19 марта 2019

Чтобы получить доступ к файлу свойств и загрузить его в приложение, вы можете использовать следующее.

public static void loadPropertiesToMemory() {
    Properties prop = new Properties();
    InputStream input = null;
    String filePathPropFile = "configuration.properties";
    try {
        input = App.class.getClassLoader().getResourceAsStream(filePathPropFile);
        prop.load(input);
    } catch (IOException ex) {
        ex.printStackTrace();
    } 
}

App - класс, в котором существует этот метод.

0 голосов
/ 27 декабря 2018

Я столкнулся с той же проблемой в IntelliJ IDEA и выполнял тот же шаг.Но я не пометил папку ресурсов как «Корень ресурса».После этого проблема для меня решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...