Нет такого файла или каталога при чтении файла свойств в Java из одного класса, но не из другого - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь прочитать папку свойств по этому пути относительно хранилища root:

rest/src/main/resources/cognito.properties

У меня есть класс CognitoData по этому пути: rest/src/main/java/com/bitorb/admin/webapp/security/cognito/CognitoData.java, который загружает свойства папка с использованием этого кода, и она работает нормально:

new CognitoProperties().loadProperties("rest/src/main/resources/cognito.properties");
@Slf4j
public class CognitoProperties {

    public  Properties loadProperties(String fileName) {

        Properties cognitoProperties = new Properties();

        try {
            @Cleanup
            FileInputStream fileInputStream = new FileInputStream(fileName);
            cognitoProperties.load(fileInputStream);
        } catch (IOException e) {
            log.error("Error occured. Exception message was [" + e.getMessage() + "]");
        }

        return cognitoProperties;

    }

}

Однако, когда я вызываю CognitoData из тестового класса, расположенного в rest/src/test/java/com/bitorb/admin/webapp/security/cognito/CognitoServiceTest.java, я получаю эту ошибку:

[rest/src/main/resources/cognito.properties (No such file or directory)]

Кто-нибудь может пролить свет на то, почему это происходит?

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Файловый каталог на самом деле не является относительным в этом случае. Вы должны предоставить соответствующий путь к файлу для этого. Если вы уже используете весеннюю загрузку, вы можете изменить свой код на:

// this will read file from the resource folder.
InputStream inputStream = getClass().getClassLoader()
                          .getResourceAsStream("cognito.properties");

cognitoProperties.load(inputStream);

В противном случае вам необходимо указать полный абсолютный путь. new CognitoProperties().loadProperties("/absolutepath/..../cognito.properties")

1 голос
/ 04 марта 2020

Я не знаю, что вы используете для тестирования, но я подозреваю, что рабочий каталог при запуске тестов не является проектом root.

Одно из решений - использовать вместо этого абсолютный путь :

/absolute/path/to/project/rest/src/main/resources/cognito.properties

Или, возможно, во время тестирования проверьте, какой рабочий каталог находится, и посмотрите, можно ли его изменить в проекте root.

...