Comment ajouter des collections Apache commons dans Android Studio (Gradle)

98

J'essaie d'utiliser ListUtils mais lorsque j'ai exécuté l'application, j'ai eu cette erreur:

 Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.collections.ListUtils" on path: DexPathList[[zip file "/data/app/com.meridianaspect.wiw-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

Donc je suppose que je dois importer cette bibliothèque via gradle d'une manière ou d'une autre, mais je ne sais pas comment faire cela?

JK
la source
HttpClient faisait déjà partie d'Android mais obsolète depuis l'API 23+: stackoverflow.com/a/32157466/1085264
straya

Réponses:

6

Placez le fichier jar dans le dossier libs à la racine de votre module. Puis Fichier -> Paramètres du projet. Dans la partie gauche, choisissez le module dans lequel vous souhaitez ajouter cette bibliothèque, dans la partie droite, choisissez l'onglet Dépendances. En bas, appuyez sur le signe Plus et cliquez sur Dépendance de fichier. Ensuite, choisissez votre jar et synchronisez le projet

Oleg Osipenko
la source
6
Existe-t-il un moyen de le faire simplement en plaçant du texte dans Gradle et en ayant à gérer des fichiers jar et des modules?
JK
@JK vous voulez dire simplement laisser tomber les pots et ne pas spécifier chaque pot?
Oleg Osipenko
3
Non, je veux dire ne pas laisser tomber de bocaux, juste dire à Gradle de quel repo les obtenir
JK
4
Essayez 'compile' org.apache.commons: commons-collections4: 4.0 '
Oleg Osipenko
1
en appuyant sur le signe plus, une autre option est la dépendance de la bibliothèque et il y a une recherche - tapez le nom et recherchez la bibliothèque qui vous intéresse
Oleg Osipenko
421

Choisissez ceux dont vous avez besoin et ajoutez-les au build.gradlebloc de dépendances de:

Je vous recommande de vérifier le lien pour vous assurer que vous disposez de la dernière version. N'hésitez pas à suggérer des modifications.

collections : (lien)

implementation 'org.apache.commons:commons-collections4:4.4'

lang : (lien)

implementation 'org.apache.commons:commons-lang3:3.9'

compresser : (lien)

implementation 'org.apache.commons:commons-compress:1.19'

net : (lien)

implementation 'commons-net:commons-net:3.6'

io : (lien)

implementation 'commons-io:commons-io:2.6'

exec (lien)

implementation 'org.apache.commons:commons-exec:1.3'

codec (lien)

implementation 'commons-codec:commons-codec:1.13'

http (lien)

implementation 'org.apache.httpcomponents:httpclient:4.5.10'

validateur (lien)

implementation 'commons-validator:commons-validator:1.6'

maths (lien)

implementation 'org.apache.commons:commons-math3:3.6.1'

Voir toutes les bibliothèques Apache ici

Chad Bingham
la source
1
et pour lang, org.apache.commons:commons-lang3:3.4. source: mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.4
Adam Johns
2
et pour net, compilez 'commons-net: commons-net: 3.3'
M. Usman Khan
@Chad Pourriez-vous s'il vous plaît dire dans quelle dépendance se FilenameUtilstrouve?
Iqbal
3
@Iqbal c'est dans IO:compile 'commons-io:commons-io:2.5'
Glorfindel
Pourquoi les collections n'ont-elles pas CircularFifoBuffer? Je ne peux pas le trouver. Il en va de même pour BufferUtils
développeur Android