Получение java.io.FileNotFoundException: FileName (Нет такого файла или каталога) - PullRequest
1 голос
/ 09 июня 2019

Я получаю сообщение об ошибке «java.io.FileNotFoundException: AuthKey_7RHM5B8NS7.p8 (Нет такого файла или каталога)», файл явно находится в моем каталоге, и я использую относительный путь для файла.Вот мой каталог проектов.

Каталог проектов Изображение

image

final ApnsClient apnsClient = new ApnsClientBuilder()
    .setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
    .setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File("AuthKey_7RHM5B8NS7.p8"),
            "GL87ZNESF6", "7RHM5B8NS7"))
    .build();

Ответы [ 2 ]

1 голос
/ 09 июня 2019

Вы не должны использовать метод ApnsSigningKey.loadFromPkcs8File, но вместо этого используйте метод loadFromInputStream.

Причина в том, что вы используете ресурс - и если вы строите файл JAR из своего кода, как это часто делается, ваш ресурс будет находиться внутри файла JAR, и вы не сможете получить объект File, который указывает на него.

Код:

InputStream in = getClass().getResourceAsStream("/AuthKey_7RHM5B8NS7.p8");

final ApnsClient apnsClient = new ApnsClientBuilder()
    .setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
    .setSigningKey(ApnsSigningKey.loadFromInputStream(in, "GL87ZNESF6", "7RHM5B8NS7"))
    .build();

in.close();
1 голос
/ 09 июня 2019

Поскольку вы пытаетесь получить файл из папки ресурсов, вам необходимо указать путь к нему.

File file = new File(getClass().getResource("/AuthKey_7RHM5B8NS7.p8").getFile());

или получить URL-адрес

URL res = getClass().getClassLoader().getResource("AuthKey_7RHM5B8NS7.p8");
File file = Paths.get(res.toURI()).toFile();
String absolutePath = file.getAbsolutePath();
...