Any workaround for Firebase exception NoClassDefFoundError: LLRBNode$NodeVisitor

Any workaround for Firebase exception NoClassDefFoundError: LLRBNode$NodeVisitor

在不得不切换到 Firebase Admin 4.0.0 SDK 之后,我在服务器上得到了这个。任何人都知道我可以切换回旧的 server-sdk 依赖项的任何方式,或者解决此异常的方法?同时我已经向 FB 报告了它,但想再次获得服务器 运行...目前我似乎完全卡住了。

java.lang.NoClassDefFoundError: com/google/firebase/database/collection/LLRBNode$NodeVisitor
  at com.google.firebase.database.snapshot.PriorityUtilities.NullPriority(PriorityUtilities.java:13)
  at com.google.firebase.database.snapshot.NodeUtilities.NodeFromJSON(NodeUtilities.java:12)
  at com.google.firebase.database.core.Repo.updateInfo(Repo.java:540)
  at com.google.firebase.database.core.Repo.onServerInfoUpdate(Repo.java:494)
  at com.google.firebase.database.core.Repo.onDisconnect(Repo.java:485)
  at com.google.firebase.database.connection.PersistentConnectionImpl.onDisconnect(PersistentConnectionImpl.java:409)
  at com.google.firebase.database.connection.Connection.close(Connection.java:82)
  at com.google.firebase.database.connection.Connection.onReset(Connection.java:199)
  at com.google.firebase.database.connection.Connection.onControlMessage(Connection.java:152)
  at com.google.firebase.database.connection.Connection.onMessage(Connection.java:110)
  at com.google.firebase.database.connection.WebsocketConnection.appendFrame(WebsocketConnection.java:226)
  at com.google.firebase.database.connection.WebsocketConnection.handleIncomingFrame(WebsocketConnection.java:271)
  at com.google.firebase.database.connection.WebsocketConnection.access0(WebsocketConnection.java:20)
  at com.google.firebase.database.connection.WebsocketConnection$WSClientTubesock.run(WebsocketConnection.java:67)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.google.firebase.database.collection.LLRBNode$NodeVisitor
  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 21 more

稍后:

Tue Nov 08 14:49:06 CET 2016 [ERROR] RunLoop: Uncaught exception in Firebase Database runloop (3.0.0). Please report to support@firebase.com
java.lang.NullPointerException
at com.google.firebase.database.core.Repo.addEventCallback(Repo.java:518)
at com.google.firebase.database.Query.run(Query.java:195)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

运行 今天早上遇到完全相同的问题。显然 Firebase 将 firebase-server-sdk 的版本更新为 3.0.2,这是一个空包,强制切换到 firebase-admin 4.0.0。 不过,您仍然可以使用 firebase-server-sdk 3.0.1。 在您的 Maven 文件中放置:

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-server-sdk</artifactId>
  <version>3.0.1</version>
</dependency>

我的有

的等效版本
  <version>[3.0.1,)</version>

这使得它拉取 3.0.2 而不是 3.0.1 因为它是最新的

解决 firebase-admin 的问题后,切换到它可能是个好主意

刚刚在 POM 文件中添加了这个内容(您仍然可以使用最新的 firebase 实现):

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-server-sdk</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-server-sdk</artifactId>
  <version>3.0.1</version>
</dependency>

Firebase 刚刚发布了 firebase-admin 4.0.1 版。这会添加缺失的 类 并且似乎可以正常工作。

这本可以管理得更好。 firebase-admin 版本 4.0.0 应该已经过测试,此外,在添加新依赖项的同时杀死旧依赖项没有意义 - 应该有一段时间(至少几天)人们没有被迫升级。

问题解决了,需要更新版本到4.0.1!!