Получить абсолютный путь к файлу ресурсов внутри банки - PullRequest
0 голосов
/ 06 августа 2020

Я хочу получить доступ к файлу внутри папки ресурсов текущего запущенного jar-файла. Файл находится внутри My_app.jar, где находится /apps/dashboard/. Я пытался получить к нему доступ вот так

String customScriptPath = "script/template.sh";
public String getTemplatePath() {
        Resource temp=  new ClassPathResource(this.customScriptPath, this.getClass().getClassLoader()); 
        try {
            File templateFile =  temp.getFile();
            logger.info("Script template path = "+templateFile.getAbsolutePath());
            return templateFile.getAbsolutePath();
        } catch (IOException e) {
            logger.error(e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

и получил эту ошибку

class path resource [script/template.sh] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/apps/dashboard/My_app.jar!/BOOT-INF/classes!/script/template.sh

1 Ответ

0 голосов
/ 06 августа 2020

Вы не можете использовать File для доступа к template.sh. File используется для ссылки на файлы в файловой системе. В вашем случае вы пытаетесь сослаться на что-то внутри файла jar.

Если вы хотите прочитать содержимое template.sh, возьмите поток, используя Resource.getInputStream(). Если вы хотите зарегистрировать расположение файла, используйте Resource.getURL().

...