【问题标题】:Netty unable to process request after adding Firebase Admin 6.12.2添加 Firebase Admin 6.12.2 后 Netty 无法处理请求
【发布时间】:2020-06-11 03:59:58
【问题描述】:

我正在使用带有 scala 版本 2.11.7 和 sbt 0.13 的 play framework 2.5.4,将 "com.google.firebase" % "firebase-admin" % "6.12.2" 添加到 build.sbt 文件后事情停止工作

根据要求得到以下错误

[error] p.c.s.n.PlayRequestHandler - Exception caught in Netty
java.lang.AbstractMethodError: null
    at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:77)
    at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
    at com.typesafe.netty.http.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:129)
    at com.typesafe.netty.http.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:96)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)

【问题讨论】:

  • 您在启动时遇到任何错误吗?
  • 我在启动时没有收到任何错误@jacks

标签: java playframework netty playframework-2.5


【解决方案1】:

如果有人遇到同样的问题,以下对我有用,

将 firebase-admin-6.12.2.jar 添加到外部库并将以下依赖项添加到您的 build.sbt

"com.google.guava" % "guava" % "28.2-jre",
"com.google.api" % "api-common" % "1.8.1",
"com.google.api-client" % "google-api-client" % "1.30.1",
"com.google.auth" % "google-auth-library-oauth2-http" % "0.20.0"

以及使用 firebase admin 发送通知的以下代码

String fcmToken = "";
Message message = Message.builder()
                            .setNotification(new Notification(
                                    title,
                                    context))
                            .setToken(fcmToken)
                            .build();
String response = null;
try {
         response = FirebaseMessaging.getInstance(FirebaseApp.initializeApp(getOptions()))
                                    .send(message);
     } catch (FirebaseMessagingException e) {
       e.printStackTrace();
     }
System.out.println("Successfully sent message: " + response);



FirebaseOptions getOptions() {
    FileInputStream serviceAccount = null;
    FirebaseOptions options =null;
    try {
             serviceAccount = new FileInputStream("conf/projectPrivateKey.json");
        } catch (FileNotFoundException e) {
                e.printStackTrace();
        }


        try {
                 options = new FirebaseOptions.Builder()

                 .setCredentials(GoogleCredentials.fromStream(serviceAccount))

                 .setDatabaseUrl("https://DATABASE_NAME.firebaseio.com")
                            .build();
             } catch (IOException e) {
                    e.printStackTrace();
             }

    return options;
}

【讨论】:

    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 2022-10-15
    • 2013-06-13
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多