Как определить относительный путь к файлу? - PullRequest
1 голос
/ 12 февраля 2020

У меня есть проект с огурцом и maven, работа от Intellij IDEA.

Мне нужно использовать относительный путь к файлу. Сейчас я работаю над ma c os, но тогда проект также будет использоваться на windows.

  1. Как определить относительный путь от RunnerTest. java до файла application.properties для ma c os?
  2. Будут ли различия в определении того же пути для Windows?

Вот мой RunnerTest. Java Класс

public class RunnerTest {

    public static void main(String[] args) throws Throwable {
        System.setProperty("TagConfigFile", "../../config/application.properties");

        //...

        String sConfigFile = System.getProperty("TagConfigFile", "null");

        try (InputStream streamFromResources = Props.class.getClassLoader().getResourceAsStream(sConfigFile)) {
            /* work wiht  streamFromResources */
        } catch (IOException | NullPointerException ee) {
            throw new PropsRuntimeException("Failed to access properties file", ee);
        }
    }
}

Вот изображение структуры моего проекта (для ясности добавлена ​​подсветка):

enter image description here

Я пытался использовать такие способы. Но это не помогло

 1. "../../config/application.properties"
 2. "src/resources/config/application.properties"
 3. "../../resources/config/application.properties"

1 Ответ

0 голосов
/ 14 февраля 2020

Я не претендую на правильность, но это сработало:

  1. Я создал папку resources в src -> main и переместил туда папку config. Я создал папку resources в src -> test и переместил туда все остальные папки. В результате получается такая структура:
src
 |----main
 |      |
 |      |----java
 |      |----resources
 |      |        |----config
 |      |        |       |----application.properties
 |
 |----test
 |      |----resources
 |      |        |----features
 |      |        |----pipes
 |      |        |----testdata
 |      |        |----webdrivers
Вместо System.setProperty("TagConfigFile", "../../config/application.properties"); Я написал System.setProperty("TagConfigFile", "./config/application.properties"); в RunnerTest.java классе

Если кто-то предложит более красивое рабочее решение, я буду очень рад

...