Java: getResourceAsStream в статическом методе
Чтобы вызватьgetResourceAsStream
в статическом методе, мы используемClassName.class
вместоgetClass()
1. В нестатическом методе
getClass().getClassLoader().getResourceAsStream("config.properties"))
2. В статическом методе
ClassName.class.class.getClassLoader().getResourceAsStream("config.properties"))
1. Нестатический метод
Файл.properties
в пути к классам проекта.
src/main/resources/config.properties
#config file json.filepath = /Users/example/Documents/workspace/SnakeCrawler/data/
FileHelper.java
package com.example; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class FileHelper { public static void main(String[] args) { FileHelper obj = new FileHelper(); System.out.println(obj.getFilePathToSave()); } public String getFilePathToSave() { Properties prop = new Properties(); String result = ""; try (InputStream inputStream = getClass() .getClassLoader().getResourceAsStream("config.properties")) { prop.load(inputStream); result = prop.getProperty("json.filepath"); } catch (IOException e) { e.printStackTrace(); } return result; } }
Выход
/Users/example/Documents/workspace/SnakeCrawler/data/
2. Статический метод
Если методgetFilePathToSave()
преобразован в статический метод, методgetClass()
завершится ошибкой и запроситCannot make a static reference to the non-static method getClass() from the type Object
To fix this, обновитьgetClass()
доClassName.class
FileHelper.java
package com.example; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class FileHelper { public static void main(String[] args) { System.out.println(getFilePathToSaveStatic()); } public static String getFilePathToSaveStatic() { Properties prop = new Properties(); String result = ""; try (InputStream inputStream = FileHelper.class .getClassLoader().getResourceAsStream("config.properties")) { prop.load(inputStream); result = prop.getProperty("json.filepath"); } catch (IOException e) { e.printStackTrace(); } return result; } }
Выход
/Users/example/Documents/workspace/SnakeCrawler/data/