Похоже, файл свойств не найден.Вы можете отследить его, напечатав исключение (вместо ex.getMessage () -> выбросить исключение или записать его в журнал / консоль).
Обратите внимание на расположение файла свойств.Рекомендуемое расположение для файлов ресурсов: src / main / resources
Следующий код (на основе вашего кода) решит проблему:
package main;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
public class PopertiesFileSeemsToBeProducingANullPointerException {
private static String testEnvironment;
private static final String CONFIG_PROPERTIES_DIRECTORY = "src/main/resources/envs.properties";
//GLOBAL URL's
public static String HOMEPAGE_URL = "https://" + testEnvironment + ".deltaway.co.uk/";
static {
try{
Properties props = new Properties();
File file = new File(PopertiesFileSeemsToBeProducingANullPointerException.CONFIG_PROPERTIES_DIRECTORY);
FileInputStream fileInput = new FileInputStream(file);
props.load(fileInput);
// process properties content
testEnvironment = props.getProperty("testEnvironment");
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
System.out.println(testEnvironment);
}
}
Но я не рекомендую использовать этокод, поскольку он имеет некоторые проблемы:
- утечка ресурсов - входной поток не был закрыт должным образом.
- статический код - трудно проверить и трудно поддерживать
- НЕТ констант
Лучшей реализацией будет добавление интерфейса Iconfig и класса Config, который реализует интерфейс
Я предлагаю решить проблему следующим образом:
IConfigинтерфейс:
public interface IConfig {
public void init();
}
Класс Config:
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import lombok.Data;
@Data
public class Config implements IConfig{
private final String PROPERTIES_FILE = "envs.properties";
private final String ENVIRONMENT = "testEnvironment";
private String env;
public void init(){
try(InputStream is = this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE)){
Properties props = new Properties();
props.load(is);
env = props.getProperty(ENVIRONMENT);
} catch (IOException e) {
throw new RuntimeException("Failed to read properties file due to IO issues");
}
}
}
Загрузить конфигурацию в свой драйвер:
@Autowired
IConfig config;
private void loadConfig() {
config.init();
}
Вы можете напечатать нужный env:
System.out.println(config.getEnv());