B4A
Type com.google.common.util.concurrent.ListenableFuture is defined multiple times – B4X Duplicate classes
La compilazione B4A fallisce perché la classe ListenableFuture è contenuta sia in guava-27.0.1-android.jar sia nell'artefatto listenablefuture separato. Escludendo il vecchio jar incorporato e dichiarando le dipendenze Maven corrette il compilatore vede una sola definizione.
Cosa significa questo errore?
La compilazione B4A fallisce perché la classe ListenableFuture è contenuta sia in guava-27.0.1-android.jar sia nell'artefatto listenablefuture separato. Escludendo il vecchio jar incorporato e dichiarando le dipendenze Maven corrette il compilatore vede una sola definizione.
Messaggio originale
Type com.google.common.util.concurrent.ListenableFuture is defined multiple timesContesto e parole chiave
Alias
- Guava duplicate classes
- ListenableFuture duplicate
Messaggi alternativi
- Compilation failed: the same ListenableFuture type is present in two archives
Prodotti
- B4A
- Guava
Piattaforme
- Android
Parole chiave
- b4a listenablefuture defined multiple times
- excludedlib guava b4a
- guava 27 duplicate classes b4a
Cause possibili
Dipendenza Guava incorporata e dipendenza separata sovrapposte
Una versione del jar Guava contiene già ListenableFuture, mentre il progetto aggiunge anche l'artefatto com.google.guava:listenablefuture. Il dexer individua due definizioni dello stesso tipo e interrompe la compilazione.
comuneDiagnosi
Le due origini del tipo nel log di compilazione
Cercare nel log i percorsi di guava-27.0.1-android.zip o jar e di com.google.guava:listenablefuture. La segnalazione deve indicare lo stesso tipo in entrambi gli archivi.
Come leggere il risultato. La presenza di entrambe le origini conferma una collisione di dipendenze e non un errore del codice applicativo.
Risoluzione
Escludere il jar Guava duplicato e usare Maven
Inserire le direttive nel modulo Main, rimuovendo dalla risoluzione il vecchio jar che contiene già la classe duplicata.
- Aggiungere le direttive nel Main del progetto B4A.
- Pulire il progetto e ricompilare per rigenerare il classpath.
- Verificare che il log non riporti più due archivi per ListenableFuture.
#ExcludedLib: guava-27.0.1-android.jar#AdditionalJar: com.google.guava:guava#AdditionalJar: com.google.guava:listenablefutureDomande frequenti
Dove vanno inserite le direttive Guava?
Nel caso documentato vanno inserite nel modulo Main, così il compilatore B4A le applica alla risoluzione globale delle dipendenze.
Approfondimenti
- Class Defined multiple times (SOLVED) thread_b4x_verificato