我正在使用Java和Spring和Maven。我试图获得资源的处理,但得到以下内容:
引起:java.io.FileNotFoundException: /certificates/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer (没有这样的文件或目录)
如下所示,资源存在:
我尝试按如下方式访问资源:
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);
}
答案 0 :(得分:0)
您的路径以/
开头,因此它将被解释为绝对路径,即从根目录开始。如果您要使用相对路径,即从应用程序的根开始,请删除前导/
。
所以你的路径应该是:src/main/resources/certificates/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer
。
答案 1 :(得分:0)
Class.getResource
可以使用相对路径或绝对路径。绝对路径必须以斜杠/
开头。
但是使用ClassLoader
时,只使用绝对路径,并且应该省略起始斜杠。原来的质疑就是这种情况。