获取 java.io.FileNotFoundException:文件名(没有那个文件或目录)
Getting java.io.FileNotFoundException: FileName (No such file or directory)
我收到错误 "java.io.FileNotFoundException: AuthKey_7RHM5B8NS7.p8 (No such file or directory)",文件显然在我的目录中,我正在使用文件的相对路径。这是我的项目目录。
项目目录图片
final ApnsClient apnsClient = new ApnsClientBuilder()
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File("AuthKey_7RHM5B8NS7.p8"),
"GL87ZNESF6", "7RHM5B8NS7"))
.build();
当您尝试从资源文件夹中获取文件时,您需要为此指定路径。
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();
你不应该使用 ApnsSigningKey.loadFromPkcs8File
method but instead use the 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();
我收到错误 "java.io.FileNotFoundException: AuthKey_7RHM5B8NS7.p8 (No such file or directory)",文件显然在我的目录中,我正在使用文件的相对路径。这是我的项目目录。
项目目录图片
final ApnsClient apnsClient = new ApnsClientBuilder()
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File("AuthKey_7RHM5B8NS7.p8"),
"GL87ZNESF6", "7RHM5B8NS7"))
.build();
当您尝试从资源文件夹中获取文件时,您需要为此指定路径。
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();
你不应该使用 ApnsSigningKey.loadFromPkcs8File
method but instead use the 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();