Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对keystore的引用导致类初始化崩溃!2.0(Scala,~Java)_Java_Scala_Playframework 2.0 - Fatal编程技术网

对keystore的引用导致类初始化崩溃!2.0(Scala,~Java)

对keystore的引用导致类初始化崩溃!2.0(Scala,~Java),java,scala,playframework-2.0,Java,Scala,Playframework 2.0,使用notnoop提供的令人敬畏的Java APN 出于某种原因,当我想把我的密钥库中的整个对象,房子的APN刚刚爆炸。以下是: object Notification { val iosApnsDist = APNS.newService() .withCert("/ipush.dist.p12", "password") .withSandboxDestination() .build() } 对于那些熟悉游戏的人!,添加

使用notnoop提供的令人敬畏的Java APN

出于某种原因,当我想把我的密钥库中的整个对象,房子的APN刚刚爆炸。以下是:

object Notification {
 val iosApnsDist = 
        APNS.newService()
        .withCert("/ipush.dist.p12", "password")
        .withSandboxDestination()
        .build()
}
对于那些熟悉游戏的人!,添加到
conf
文件夹的文件应该在类路径上可用。所以我有点困惑,为什么我的引用会使应用程序崩溃

下面是从APNS java源代码中提取密钥库的片段。有什么想法吗

public ApnsServiceBuilder withCert(String fileName, String password)
    throws RuntimeIOException, InvalidSSLConfig {
        FileInputStream stream = null;
        try {
            stream = new FileInputStream(fileName);
            return withCert(stream, password);
        } catch (FileNotFoundException e) {
            throw new RuntimeIOException(e);
        } finally {
            Utilities.close(stream);
        }
    }
更新 我能够在启动期间运行try/catch时提取错误消息。基本上,它找不到文件:

Caused by: com.notnoop.exceptions.RuntimeIOException: java.io.FileNotFoundException: \ipush.dev.p12 (The system cannot find the file specified)
        at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:116)
        at engine.logic.notification.Notification$.<init>(Notification.scala:61)
原因:com.notnoop.exceptions.RuntimeIOException:java.io.FileNotFoundException:\ipush.dev.p12(系统找不到指定的文件)
位于com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:116)
位于engine.logic.notification.notification$(notification.scala:61)

我可以确认文件确实在/conf文件夹中,那么原因是什么呢?

找到了原因。注意这场比赛!将文件添加到类路径中,但是
FileInputStream
实际上并不直接引用类路径上的路径。相反,它使用文件系统上的路径

前面的StackOverflow将介绍有关getResourceAsStream与FileInputStream的基本知识:

因此,回到最初的问题……看看APN的源代码是有帮助的。请注意,它使用的是
FileInputStream
,但是因为播放!仅将其添加到类路径,然后需要修改源代码以使用
ClassLoader.class.getResourceAsStream(fileName)

我怀疑这也适用于其他开源库

那么为什么物体会坠毁呢?因为如果没有一点错误,捕获它永远不会正确初始化