Ben*_*min 5 intellij-idea kotlin firebase google-cloud-firestore
我一直在尝试制作一个小型应用程序,它首先扫描 HTML 中的数据,然后将其上传到我的 Firestore。我现在基本上已经完成了它,当从 IntelliJ IDEA 中启动它时,它工作得很好。然而,一旦我将其导出到工件中,当尝试从 Firestore 下载/上传到 Firestore 时,它就会开始抛出以下异常!
我应该提到我正在使用 Koltin/JVM 进行编码,因为它更容易。由于没有 Kotlin Firebase-Admin 版本,我只使用 Java 版本,这应该不是问题,因为 Kotlin 编译为 Java。如果我错了请纠正我!
Nov 27, 2019 6:59:17 PM io.grpc.internal.ManagedChannelImpl$1 uncaughtException
SEVERE: [Channel<1>: (firestore.googleapis.com:443)] Uncaught exception in the SynchronizationContext. Panic!
java.lang.IllegalStateException: Could not find policy 'pick_first'. Make sure its implementation is either registered to LoadBalancerRegistry or included in META-INF/services/io.grpc.LoadBalancerProvider from your jar files.
at io.grpc.internal.AutoConfiguredLoadBalancerFactory$AutoConfiguredLoadBalancer.<init>(AutoConfiguredLoadBalancerFactory.java:97)
at io.grpc.internal.AutoConfiguredLoadBalancerFactory.newLoadBalancer(AutoConfiguredLoadBalancerFactory.java:67)
at io.grpc.internal.ManagedChannelImpl.exitIdleMode(ManagedChannelImpl.java:379)
at io.grpc.internal.ManagedChannelImpl$ChannelTransportProvider$1ExitIdleModeForTransport.run(ManagedChannelImpl.java:473)
at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95)
at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127)
at io.grpc.internal.ManagedChannelImpl$ChannelTransportProvider.get(ManagedChannelImpl.java:477)
at io.grpc.internal.ClientCallImpl.startInternal(ClientCallImpl.java:257)
at io.grpc.internal.ClientCallImpl.start(ClientCallImpl.java:190)
at io.grpc.internal.CensusTracingModule$TracingClientInterceptor$1.start(CensusTracingModule.java:394)
at io.grpc.internal.CensusStatsModule$StatsClientInterceptor$1.start(CensusStatsModule.java:695)
at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:32)
at com.google.api.gax.grpc.GrpcHeaderInterceptor$1.start(GrpcHeaderInterceptor.java:94)
at com.google.api.gax.grpc.GrpcDirectStreamController.startCommon(GrpcDirectStreamController.java:115)
at com.google.api.gax.grpc.GrpcDirectStreamController.start(GrpcDirectStreamController.java:101)
at com.google.api.gax.grpc.GrpcDirectServerStreamingCallable.call(GrpcDirectServerStreamingCallable.java:68)
at com.google.api.gax.grpc.GrpcServerStreamingRequestParamCallable.call(GrpcServerStreamingRequestParamCallable.java:61)
at com.google.api.gax.grpc.GrpcExceptionServerStreamingCallable.call(GrpcExceptionServerStreamingCallable.java:59)
at com.google.api.gax.rpc.WatchdogServerStreamingCallable.call(WatchdogServerStreamingCallable.java:69)
at com.google.api.gax.rpc.ServerStreamingCallable$1.call(ServerStreamingCallable.java:237)
at com.google.api.gax.rpc.ServerStreamingAttemptCallable.call(ServerStreamingAttemptCallable.java:230)
at com.google.api.gax.rpc.ServerStreamingAttemptCallable.start(ServerStreamingAttemptCallable.java:193)
at com.google.api.gax.rpc.RetryingServerStreamingCallable.call(RetryingServerStreamingCallable.java:87)
at com.google.api.gax.tracing.TracedServerStreamingCallable.call(TracedServerStreamingCallable.java:76)
at com.google.api.gax.rpc.ServerStreamingCallable$1.call(ServerStreamingCallable.java:237)
at com.google.api.gax.rpc.ServerStreamingCallable.serverStreamingCall(ServerStreamingCallable.java:166)
at com.google.api.gax.rpc.ServerStreamingCallable.serverStreamingCall(ServerStreamingCallable.java:178)
at com.google.cloud.firestore.FirestoreImpl.streamRequest(FirestoreImpl.java:474)
at com.google.cloud.firestore.FirestoreImpl.getAll(FirestoreImpl.java:243)
at com.google.cloud.firestore.FirestoreImpl.getAll(FirestoreImpl.java:253)
at com.google.cloud.firestore.FirestoreImpl.getAll(FirestoreImpl.java:143)
at com.google.cloud.firestore.DocumentReference.get(DocumentReference.java:354)
at FirebaseHandler.getLehrer(FirebaseHandler.kt:95)
at HtmReader.readFile(HtmReader.kt:12)
at MainView.theStuff(MainView.kt:61)
at MainView.onDock(MainView.kt:44)
at tornadofx.UIComponent.callOnDock$tornadofx(Component.kt:700)
at tornadofx.UIComponent$rootSceneWindowShowingPropertyChangeListener$1.changed(Component.kt:556)
at tornadofx.UIComponent$rootSceneWindowShowingPropertyChangeListener$1.changed(Component.kt:327)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ReadOnlyBooleanPropertyBase.fireValueChangedEvent(ReadOnlyBooleanPropertyBase.java:72)
at javafx.beans.property.ReadOnlyBooleanWrapper.fireValueChangedEvent(ReadOnlyBooleanWrapper.java:103)
at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:110)
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:144)
at javafx.stage.Window.setShowing(Window.java:922)
at javafx.stage.Window.show(Window.java:937)
at javafx.stage.Stage.show(Stage.java:259)
at tornadofx.App.start(App.kt:101)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)
我的代码(在本例中)下载内容如下:
fun getLehrer(): HashMap<String, Any> {
[...]
val out = HashMap<String, Any>()
try {
val future = firestore.collection("stuff").document("lehrer").get()
future.await()
if (future.isDone) {
[...]
}
} catch (ex: Exception) {
println(" ++ cant get lehrer liste")
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
错误发生在这一行:
val future = firestore.collection("stuff").document("lehrer").get()
Run Code Online (Sandbox Code Playgroud)
我已经尝试解决这个问题好几天了,实际上花了几个小时谷歌搜索并尝试不同的事情,但到目前为止没有任何效果对我有用!
我试过:
仅供参考:奇怪的是,我的资源文件夹中的图标在 Jar 中变成了完全不同的图标。别问我为什么。我也找不到答案,但这并不是什么大问题,因为我可以将其替换到罐子中。
哦,这也是我的第一个问题,所以如果我犯了任何错误,我很抱歉!我可能也犯了一些拼写错误,对此我深表歉意。
任何帮助将不胜感激!
嘿,在谷歌搜索更多内容后,我发现了一篇文章,列出了 LoadBalancerRegistry 的代码片段(https://www.codota.com/code/java/classes/io.grpc.LoadBalancerRegistry),我在其中滚动并发现了这个:PickFirstBalancerFactory 。在里面()
所以我决定寻找这个 Factory 但找不到它,而是找到了 PickFirstLoadBalancerProvider()。请记住,通过随机完成自动完成,为了向 LoadBalancerRegistry 注册某些内容,需要一个 Provider。
长话短说,我将它们设置在一起并将以下内容添加到我的类的初始化部分,现在工作正常!
LoadBalancerRegistry.getDefaultRegistry().register(PickFirstLoadBalancerProvider())
我想如果有人有同样的问题我应该回答!
仅供参考:图标仍然变成那个奇怪的图标。我不知道为什么或如何可能,但如果我将其替换到 .jar 中,它就会起作用,所以我真的不在乎 xD
| 归档时间: |
|
| 查看次数: |
3528 次 |
| 最近记录: |