Java.io.FileNotFoundException: ресурс пути к классу [certs / dev / test.crt] не может быть разрешен

Мое приложение Springboot War развертывается в экземпляре ec2 через Elastic beanstalk. Я пытаюсь прочитать файл из папки ресурсов и получаю следующее исключение. Папка сертификатов находится внутри папки ресурсов.

8 апреля 22:42:03 web: java.io.FileNotFoundException: ресурс пути к классу [certs / dev / test.crt] не может быть преобразован в абсолютный путь к файлу, поскольку он не находится в файловой системе: jar: file: / var /app/current/target/test-app-0.0.1-SNAPSHOT.war!/WEB-INF/classes!/certs/dev/test.crt

import com.amazonaws.services.iot.client.sample.sampleUtil.SampleUtil;

private ResourceLoader resourceLoader;

Resource certRes = resourceLoader.getResource("classpath:certs/dev/test.crt");
Resource privateRes = resourceLoader.getResource("classpath:certs/dev/private.key");

String certificateFile = certRes.getFile().getPath();
String privateKeyFile = privateRes.getFile().getPath();

SampleUtil.KeyStorePasswordPair pair = SampleUtil.getKeyStorePasswordPair(certificateFile, privateKeyFile);

Я попытался использовать ClassLoader.getSystemClassLoader (). GetResourceAsStream для чтения файла, но SampleUtil.KeyStorePasswordPair нужен путь.

Кто-нибудь может помочь?

В сообщении об ошибке отображается «jar: file», но мое приложение - война. это проблема?

Аня

Вы не можете преобразовать ресурс пути к классу в java.util.File. Последний должен быть фактическим файловым ресурсом в файловой системе. Когда что-то находится внутри WAR / JAR, это не так, поэтому getFile не будет работать. Вы можете использовать только InputStream для его чтения, или вам нужно найти другой способ конвертировать в Path, или использовать другой способ для создания вашего SampleUtil.KeyStorePasswordPair.

M. Deinum 09.04.2021 10:12

Также - вы проверили, действительно ли файл находится внутри файла войны?

Alexander Katsenelenbogen 09.04.2021 15:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
28
0

Другие вопросы по теме