在scala中包含文件作为输入流

时间:2013-07-18 07:43:49

标签: scala keystore getresource javapns

我在代码中使用文件时遇到问题。我正在使用javaPNS并尝试让它工作。我现在认为错误的是我如何在javaPNS中的Push.alert方法中获取keystore参数的文件。

我真正想知道的是如何正确“获取资源”以使其格式正确?

以下是抛出的异常:

javapns.communication.exceptions.InvalidKeystoreReferenceException:
Invalid keystore parameter (null).  Must be InputStream, File, String (as a file path),
or byte[].
at........

以下是我目前包含该文件的方式:

val keystoreFile = getClass.getResourceAsStream("/app/conf/cert.p12")

如果我们看一下我得到的例外,你认为上面的问题是什么吗?我应该如何在Scala中正确包含文件?

的问候,

1 个答案:

答案 0 :(得分:2)

您遇到的问题与您正在加载的InputStream返回null的事实有关。当您尝试加载的文件在类路径上找不到时,会发生这种情况。尝试将代码更改为:

getClass.getClassLoader.getResourceAsStream("app/conf/cert.p12")

您会注意到我删除了文件路径上的前导斜杠,因为我认为这是您的问题。然后确保无论“app”的父目录是什么,都在类路径上。