Я хотел бы использовать библиотеку Apache Commons Math для вычисления стандартного отклонения, а не писать свой собственный метод, но я не смог избавиться от этой ошибки:Android Studio Commons Math «NoClassDefFoundError»
FATAL EXCEPTION: main
Process: io.github.hactarce.qtimer, PID: 25294
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/discovery/tools/DiscoverClass;
at org.apache.commons.math.stat.DescriptiveStatistics.newInstance(DescriptiveStatistics.java:91)
at ...
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.discovery.tools.DiscoverClass" on path: DexPathList[[dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-support-annotations-24.0.0_9d3ba58e638ed02faa84bf39a48fe2d24bde6b2a-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-me.zhanghai.android.materialprogressbar-library-1.1.6_3f4dfaff6ac84c0f0b41e456c4c7ea77b367a4b0-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-internal_impl-24.0.0_92a109cb571bd624e4bea6328895341c772d7c6c-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-commons-math-20040218.045431_cdd6a0543f856d0d318fbe7a891815a73a580ce9-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-com.android.support-support-vector-drawable-24.0.0_2a3a8f3ca104420ae4ace8cc58b02d413c7612ea-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-com.android.support-support-v4-24.0.0_bffc8401f241a00ed2f701ca43e6dffa2f80398d-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-com.android.support-recyclerview-v7-24.0.0_2c37df8ad6003e99ec2537a49be829f52468f887-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-com.android.support-appcompat-v7-24.0.0_73746d492da138f16fa685b4e64eeb56d351948f-classes.dex", dex file "/data/data/io.github.hactarce.qtimer/files/instant-run/dex/slice-com.android.support-animated-v
Моего Gradle файл:
apply plugin: 'com.android.application'
android {
compileSdkVersion 'Google Apis:Google Apis:23'
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "io.github.hactarce.qtimer"
minSdkVersion 18
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.afollestad.material-dialogs:core:0.8.6.0'
compile 'com.afollestad.material-dialogs:commons:0.8.6.0'
compile 'commons-math:commons-math:20040218.045431'
}
Я видел много других ответов о подобных ошибках, но ни один из них не похож, чтобы помочь. Заранее спасибо. :)
Ничего себе, это ** старый ** версия. 2004! Ну, похоже, что ему нужно «commons-discovery», поэтому вам нужно также добавить эту зависимость. Чтобы соответствовать тому, что у вас есть, вам, скорее всего, понадобится 'commons-discovery: commons-discovery: 20040218.194635'. Учитывая, что он имеет ту же самую * (очень старую) дату, они, вероятно, подходят друг другу. --- Предложение: переход к чему-то более актуальному. Я имею в виду, Android тогда даже не существовал! – Andreas
Yikes ... может быть, я сам получу их. : s – Hactar
Зачем переоценивать себя? Просто используйте [более новую версию] (http://commons.apache.org/proper/commons-math/index.html), например. 'Org.apache.commons: Обще-math3: баночка: 3.6.1'. Версия 3.6.1 была выпущена в 2016-03-21. – Andreas