java - 在 NoSuchMethodError 上需要帮助:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;在 IntelliJ 中
问题描述
还有一些其他问题,但其中大部分是针对 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();
我读到 Guava 存在一些版本问题,但我无法排除 build.gradle 中的依赖项。我尝试了我发现的一切,但没有任何效果。
同样,当我在 IntelliJ 中运行 main 方法时,该项目运行良好,但是当我运行 .jar 时,它会引发异常。
如果我能收到一些关于如何创建 .jar 文件的提示,或者是否有关于 Guava 的任何有用信息以及如何修复依赖关系,我将不胜感激。
解决方案
也许您使用的是旧版本的 Guava。com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor
从 Guava 18.0 开始引入。
* @since 18.0
*/
public static Executor directExecutor() {
return DirectExecutor.INSTANCE;
}
请检查您对 Guava 的依赖项build.gradle
并尝试升级它。如果您使用的不是旧版本,请点击IntelliJ 上的CTRL+ N,然后输入com.google.common.util.concurrent.MoreExecutors
以找到您正在使用的 Guava jar。
推荐阅读
- vba - 逐行隐藏表单上的文本字段或按钮,而不是整个表单
- java - 在 Spring Security 中解码 AWS Cognito 生成的 JWT 时出错
- javascript - 如何将具有此类数据的 txt 文件转换为 json?
- python - 带有数字的 BERT(来自 Transformers 的双向编码器表示)
- java - 如果一个对象遇到唯一约束,Java Spring Jpa saveAll 方法将失败
- python-3.x - 如何将字符串的元素转换为包格式(例如:'123-56.2' -> b'\x01\x02\x03\x0-...'
- reactjs - 如何获取 axios.get 数据以及将其置于 redux reducer 初始状态的位置
- javascript - 如何在外部 .js 文件中运行 Google 跟踪代码管理器脚本?
- node.js - 在 mongodb (Node.js) 中更新子文档
- java - 替换不推荐使用的 Java 方法