java.io.FileNotFoundException资源路径不正确

时间:2017-06-21 15:11:06

标签: java spring

我正在使用Java和Spring和Maven。我试图获得资源的处理,但得到以下内容:

  

引起:java.io.FileNotFoundException:   /certificates/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer   (没有这样的文件或目录)

如下所示,资源存在:

enter image description here

我尝试按如下方式访问资源:

private static String PATH_TO_P12_CERT = "/certificates/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer";

    ApnsService service = APNS.newService().withCert(PATH_TO_P12_CERT, CERT_PASSWORD).withSandboxDestination()
            .build();

上面的代码是从教程中复制的,所以我确信它是正确的。但是,PATH_TO_P12_CERT是不正确的。

问题

请有人可以告知资源的路径应该是什么?

由于

更新

如果我添加以下代码,它确实找到了资源。那么,当我尝试通过APNS.newService().withCert访问它时,为什么不呢?

InputStream is = PersonService.class.getResourceAsStream(PATH_TO_P12_CERT);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

2 个答案:

答案 0 :(得分:0)

您的路径以/开头,因此它将被解释为绝对路径,即从根目录开始。如果您要使用相对路径,即从应用程序的开始,请删除前导/

所以你的路径应该是:src/main/resources/certificates/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer

答案 1 :(得分:0)

Class.getResource可以使用相对路径或绝对路径。绝对路径必须以斜杠/开头。

但是使用ClassLoader时,只使用绝对路径,并且应该省略起始斜杠。原来的质疑就是这种情况。