Мое приложение 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.