Java - путь к файлу с использованием getClass (). GetResource () не работает - PullRequest
0 голосов
/ 31 мая 2018

Я читал те же вопросы, которые задавались здесь и на Quora, однако я до сих пор не понимаю, почему я не могу получить доступ к файлу, расположенному в папке 'src / main / resources'.Все работает, когда я вручную указываю относительный путь "src / main / resources / config / serverConf.xml"

Структура проекта:

src/main/java/"project related folders"
src/main/resources/config/serverConf.xml

И основной класс:

public class Main{

    public Main(){
        File file = new File(this.getClass().getResource("config/serverConf.xml").getPath());
        if(file.exists())
            System.out.println("Yes");
        else
            System.out.println("No");
    }

    public static void main(String[] args){
        Main main = new Main();
    }
}

Ответы [ 4 ]

0 голосов
/ 31 мая 2018

URL-адрес, предоставленный методу getResource (), должен соответствовать вашему пути к классам.Таким образом, если вам нужно запустить это из командной строки, вам нужно будет указать путь к вашей папке ресурсов, чтобы это работало, например:

java Main -cp src/main/resources/

Если вы используете IDE, обычно естьконфигурация для добавления classpath

0 голосов
/ 31 мая 2018

Обычно ведущим / будет ваш переход к filepaths, но я смог просто дать ему имя файла, и он распознал его для меня.

File file = new File(this.getClass().getResource("serverConf.xml").getPath());

0 голосов
/ 31 мая 2018

Пользователи Nikolas и Antoniossss уже ответили на вопрос.Просто дать краткое объяснение на случай, если это поможет.Из вашей структуры каталогов, я думаю, вы используете Maven.При создании проекта с использованием Maven Maven копирует все папки и файлы в папку target/classes, которая является корнем пути к классам.Так что в вашем случае должно работать следующее:

File file = new File(this.getClass().getResource("/config/serverConf.xml").getPath());

Но если вы хотите использовать относительный путь, как в исходном коде, вы должны создать папку config в каталоге, где класс Main.javaнаходится и поместите туда serverConf.xml.Тогда тоже должно работать следующее:

File file = new File(this.getClass().getResource("config/serverConf.xml").getPath());

Тем не менее, лучший способ - поместить файлы конфигурации в папку src/main/resources.

0 голосов
/ 31 мая 2018
"config/serverConf.xml"

Должно быть

"/config/serverConf.xml"
...