指向资源的java.io.FileNotFoundException路径不正确

指向资源的java.io.FileNotFoundException路径不正确,java,spring,Java,Spring,我正在使用Java、Spring和Maven。我正在尝试获取资源的句柄,但获取以下内容: 原因:java.io.FileNotFoundException: /证书/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer (无此类文件或目录) 如下所示,资源存在: 我尝试按如下方式访问资源: private static String PATH_TO_P12_CERT = "/certificates/Apple.Push.Serv

我正在使用Java、Spring和Maven。我正在尝试获取资源的句柄,但获取以下内容:

原因:java.io.FileNotFoundException: /证书/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();
上面的代码是从教程中复制的,所以我确信它是正确的。然而,不正确的是指向证书的路径

问题

请有人告诉我资源的路径应该是什么

谢谢

更新

如果我添加以下代码,它会找到资源。那么,当我尝试通过
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);
}

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


因此,您的路径应该是:
src/main/resources/certificates/Apple.Push.Services.com.ionicframework.thewhozoo912107.cer
类。getResource
可以使用相对路径或绝对路径。绝对路径必须以斜杠开始


但是,对于类加载器,只使用绝对路径,并且应该使用起始斜杠。你原来的问题就是这样。

我想混淆的地方只是:
withCert
需要一个“文件系统路径”,但你需要一个“类路径”。
getResourceAsStream
转换/解决了这个问题……我记得有一个“jboss问题”:请检查/WEB-INF/classes/的内容(在部署的容器中)…有证书文件夹吗?@xerx593问题来自路径中领先的
/
。@Nathan:你确定吗?@xerx593在评论中自己说了。嗨,Nathan,谢谢。这很有效。我感谢你的帮助。p.s.不确定为什么有人否决了你的答案。是的,我知道,但是其他人。我不知道为什么。你的答案是comp彻底地right@MikeAdamenko谢谢,很抱歉给您带来困惑…我投了反对票,因为答案可能有帮助,但错了!。
/
是“主目录”仅代表“根”…如果他不想使用相对路径?…应用程序的根是什么???…您可以删除任何其他“前导”…如果两个资源在不同的“包”中同名(您相对期望的是哪一个)@xerx593
/
是每个人的主目录,而不仅仅是根目录,您会怎么做?如果他不想使用相对路径,他可以使用绝对路径(如所写)。当两个资源在两个包中时,它们显然有不同的路径,因此不会出现混淆。我看不出有什么让你震惊。