Библиотека единиц измерения JScience несовместима с Android

У меня есть сценарий использования в моем приложении для Android, где мне нужно сохранить количество, выполнить вычисления и отобразить его в единицах по выбору пользователя (из предварительно определенного списка).

JScience идеально подходит для этого, но я не могу скомпилировать приложение для Android из-за следующей ошибки:

Error: Program type already present: javolution.ContextTestSuite$1

Отмечу, что JSCience работает на javolution. Это оставляет меня с двумя вариантами: найти другую библиотеку (я нашел JSR-363 API, но мне не удалось найти документацию по ней, за исключением нескольких случаев использования, как описано в ссылках в этом ответе SO; например, те, ссылки не обсуждают конкретные типы юнитов и где их можно найти) или исправляют несовместимость, которую я испытал между JScience и Android.

Я приму решение, которое делает любой из них.

1 ответ

Не уверен, что еще использует это, но это вызвано двойной зависимостью javolution. То, что вы можете сделать, находится в файле build.gradle (приложение модуля), вы можете исключить javolution, когда включите jscience.

dependencies {
    implementation 'com.android.support:support-v4:28.0.0'
    ...
    implementation('org.jscience:jscience:4.3.1') {
        exclude group: "org.javolution"
    }
}

Очистите / Перестройте Проект, и он должен работать.

Другие вопросы по тегам