Удаление документа из базы данных FIRESTORE с использованием JAR-файлов - PullRequest
0 голосов
/ 27 апреля 2018

Я имею дело с очень странной проблемой.

У меня есть код, разработанный на IntelliJ, который пытается удалить документ из БД FireStore.

Когда я запускаю main () внутри IntelliJ, проблем нет.

Но когда я создаю 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());

Мне действительно нужна помощь по этой проблеме. Я надеюсь, что кто-нибудь может сказать мне мою ошибку.

Спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 31 июля 2018

Теперь это работает для меня после выполнения следующих действий. В IntelliJ я сделал File > Invalidate Caches / Restart . Затем я восстановил файл .jar и успешно запустился.

Я также удалил и перестроил свой .jar с нуля, когда столкнулся с этой проблемой во второй раз.

0 голосов
/ 16 мая 2018

Я столкнулся с подобной проблемой, я решил ее, исключив guava-jdk5 из моей сборки.

// Exclude guava-jdk5 from the dependencies in gradle.
// guava-jdk5 uses older versions of classes that do not contain all required methods, as a later version of guava is in the project, excluding will mean it is used instead.
    configurations {
      all*.exclude group: 'com.google.guava', module:'guava-jdk5'
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...