对keystore的引用导致类初始化崩溃!2.0(Scala,~Java)
使用notnoop提供的令人敬畏的Java APN 出于某种原因,当我想把我的密钥库中的整个对象,房子的APN刚刚爆炸。以下是:对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() } 对于那些熟悉游戏的人!,添加
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)
我怀疑这也适用于其他开源库
那么为什么物体会坠毁呢?因为如果没有一点错误,捕获它永远不会正确初始化