我收到错误“ java.io.FileNotFoundException:AuthKey_7RHM5B8NS7.p8(无此类文件或目录)”,该文件显然在我的目录中,并且我使用该文件的相对路径。这是我的项目目录。
项目目录图片
final ApnsClient apnsClient = new ApnsClientBuilder()
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File("AuthKey_7RHM5B8NS7.p8"),
"GL87ZNESF6", "7RHM5B8NS7"))
.build();
答案 0 :(得分:1)
当您尝试从资源文件夹中获取文件时,因此需要为此指定路径。
File file = new File(getClass().getResource("/AuthKey_7RHM5B8NS7.p8").getFile());
或获取网址
URL res = getClass().getClassLoader().getResource("AuthKey_7RHM5B8NS7.p8");
File file = Paths.get(res.toURI()).toFile();
String absolutePath = file.getAbsolutePath();
答案 1 :(得分:1)
您不应使用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();