java - 使用 JAR 从 FIRESTORE DB 中删除文档失败
问题描述
我正在处理一个非常奇怪的问题。
我有一个在 IntelliJ 上开发的代码,它试图从 FireStore DB 中删除一个文档。
当我在 IntelliJ 中运行 main() 时,没有问题。
但是当我创建这个项目的 JAR 并将这个 jar 作为“java -jar xxxxx.jar”运行时,我收到以下错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
at com.google.api.gax.retrying.BasicRetryingFuture.<init>(BasicRetryingFuture.java:77)
at com.google.api.gax.retrying.CallbackChainRetryingFuture.<init>(CallbackChainRetryingFuture.java:62)
at com.google.api.gax.retrying.ScheduledRetryingExecutor.createFuture(ScheduledRetryingExecutor.java:84)
at com.google.api.gax.rpc.RetryingCallable.futureCall(RetryingCallable.java:61)
at com.google.api.gax.rpc.RetryingCallable.futureCall(RetryingCallable.java:41)
at com.google.api.gax.rpc.UnaryCallable$1.futureCall(UnaryCallable.java:126)
at com.google.api.gax.rpc.UnaryCallable.futureCall(UnaryCallable.java:87)
at com.google.cloud.firestore.FirestoreImpl.sendRequest(FirestoreImpl.java:327)
at com.google.cloud.firestore.UpdateBuilder.commit(UpdateBuilder.java:608)
at com.google.cloud.firestore.WriteBatch.commit(WriteBatch.java:41)
at com.google.cloud.firestore.DocumentReference.delete(DocumentReference.java:335)
at main.main(main.java:26)
我在我的项目中使用 Gradle 并具有以下构建:
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile 'com.google.firebase:firebase-admin:5.10.0'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
我正在编写用于删除文档的代码:
FileInputStream serviceAccount = new FileInputStream("./ServiceAccountKey.json");
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
FirebaseApp.initializeApp(options);
Firestore db ;
CollectionReference to_be_Deleted ;
db = FirestoreClient.getFirestore();
ApiFuture<WriteResult> writeResult = db.collection("XXXXXX").document("WW4ovZ5amD56pxjd5NwY").delete();
System.out.println("Update time : " + writeResult.get().getUpdateTime());
我真的需要关于这个问题的帮助。我希望有人能告诉我我的错误。
感谢你们。
解决方案
完成以下操作后,它现在对我有用。在 IntelliJ 中,我做了File > Invalidate Caches / Restart。然后我重建了我的.jar文件并成功运行。
当我第二次遇到这个问题时,我还从头开始删除并重建了我的 .jar。
推荐阅读
- haxe - haxe 获取函数类型参数的字段的类型信息
- ray - rllib 中的光线还原检查点
- oracle - 浏览多个字段的值并将它们插入同一列
- html - HTML/TS 双搜索过滤器
- angular - ExpressionChangedAfterItHasBeenCheckedError 来自绑定到“隐藏”属性的方法
- mysql - 内部选择,按区域排序的列总和
- mysql - 无法更新视图 - UPDATE 的目标表不可更新
- reactjs - Paystack 支付网关未在本机反应中显示
- amazon-web-services - AWS HTTP API Gateway 基于 URL 的路由
- recursion - 获取堆栈溢出的函数的递归迭代