需要有关NoSuchMethodError的帮助:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava / util / concurrent / Executor;在IntelliJ中

时间:2018-08-10 16:06:06

标签: java intellij-idea firebase-realtime-database google-cloud-firestore guava

还有其他一些问题,但其中大多数是针对Android的,我目前正在IntelliJ中使用Java Gradle项目工作。

我的项目是IntelliJ中的Gradle Java项目,我正在使用Cloud Firestore作为数据库。我正在尝试制作一个.jar文件,以便我可以运行该应用程序,但是会引发异常。

当我创建.jar文件时,我可能做错了,因为当我在IntelliJ中运行应用程序时,它运行良好。当我运行.jar文件时出现问题。例外如下:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
at io.grpc.internal.ClientCallImpl.<init>(ClientCallImpl.java:96)
at io.grpc.internal.ManagedChannelImpl$RealChannel.newCall(ManagedChannelImpl.java:662)
at io.grpc.internal.CensusTracingModule$TracingClientInterceptor.interceptCall(CensusTracingModule.java:382)
at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:104)
at io.grpc.internal.CensusStatsModule$StatsClientInterceptor.interceptCall(CensusStatsModule.java:675)
at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:104)
at com.google.api.gax.grpc.GrpcHeaderInterceptor.interceptCall(GrpcHeaderInterceptor.java:81)
at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:104)
at com.google.api.gax.grpc.GrpcMetadataHandlerInterceptor.interceptCall(GrpcMetadataHandlerInterceptor.java:55)
at io.grpc.ClientInterceptors$InterceptorChannel.newCall(ClientInterceptors.java:104)
at io.grpc.internal.ManagedChannelImpl.newCall(ManagedChannelImpl.java:636)
at com.google.api.gax.grpc.GrpcClientCalls.newCall(GrpcClientCalls.java:66)
at com.google.api.gax.grpc.GrpcDirectServerStreamingCallable.call(GrpcDirectServerStreamingCallable.java:65)
at com.google.api.gax.grpc.GrpcExceptionServerStreamingCallable.call(GrpcExceptionServerStreamingCallable.java:62)
at com.google.api.gax.rpc.WatchdogServerStreamingCallable.call(WatchdogServerStreamingCallable.java:69)
at com.google.api.gax.rpc.ServerStreamingCallable$1.call(ServerStreamingCallable.java:220)
at com.google.api.gax.rpc.ServerStreamingCallable$1.call(ServerStreamingCallable.java:220)
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:339)
at com.google.cloud.firestore.Query.stream(Query.java:955)
at com.google.cloud.firestore.Query.get(Query.java:995)
at com.google.cloud.firestore.Query.get(Query.java:965)
at main.main(main.java:39)

main.java中的第39行是:

ApiFuture<QuerySnapshot> query = db.collection("collectionName").get();

我读到番石榴有一些版本问题,但是我不能在build.gradle中排除依赖项。我尝试了发现的所有内容,但没有任何效果。

同样,当我在IntelliJ中运行main方法时,项目运行良好,但是当我运行.jar时,它将引发异常。

如果能收到一些有关如何创建.jar文件的提示,或者是否有关于Guava的有用信息以及如何修复依赖项的信息,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许您使用的是旧版本的Guava。 exports.updateUser = functions.firestore .document('users/{userId}') .onUpdate((change, context) => { // Get an object representing the document // e.g. {'name': 'Marie', 'age': 66} const newValue = change.after.data(); // ...or the previous value before this update const previousValue = change.before.data(); // access a particular field as you would any JS property const name = newValue.name; // perform desired operations ... }); 是从Guava 18.0开始引入的。

com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor

另请参阅: https://github.com/google/guava/commit/495f60836c95faa28955a1183a92b0ecd3b50365#diff-7a493427c77df959295f1d55574dbd50

请检查您在 * @since 18.0 */ public static Executor directExecutor() { return DirectExecutor.INSTANCE; } 中对Guava的依赖性,然后尝试对其进行升级。 如果您使用的不是旧版本,请在IntelliJ上单击 CTRL + N ,然后输入build.gradle来查找正在使用的Guava jar。