获取java.io.FileNotFoundException:FileName(无此类文件或目录)

时间:2019-06-09 05:44:34

标签: java maven servlets intellij-idea filenotfoundexception

我收到错误“ 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();

2 个答案:

答案 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();