Я реализовал проект, используя стороннюю библиотеку (zxing) после того, как проект реализации работает нормально, после того как я написал один тестовый проект на unit test мой проект. После запуска тестового проекта основной проект, классы и его методы не приводят к ошибкам, но если какой-либо класс среды zxing утилит внутри этого метода основного проекта, получив указанную выше ошибку во время выполнения, еще не компилируя время. Пожалуйста, скажите мне, как решить эту проблему?
Java.lang.IllegalAccessError: класс ref в предварительно проверенном классе разрешен для неожиданной реализации при запуске тестового проекта?
Ответ 1
Вы получаете эту ошибку из-за ссылки сторонней библиотеки, добавленной два раза. Вы добавили путь приложения в путь сборки тестового проекта. поэтому ссылка на библиотеку автоматически добавляется в тестовый проект ". Удалите ссылку на библиотеку в тестовом проекте в свойствах → android.
Ответ 2
Это происходит потому, что файлы zxing jar загружаются дважды, Вы должны установить библиотеку zxing как " Предоставлено" (если вы компилируете свой код с использованием Maven) во время компиляции, поэтому он не добавляет библиотеку к вашему байт-коду. таким образом вы не получите ошибку
Ответ 3
К сожалению, лучшее решение, которое я видел, это использовать script с этими строками кода и используя Espresso v2.0:
adb shell setprop dalvik.vm.dexopt-flags v=n,o=v
adb shell stop installd
adb shell start installd
Выполните его перед тем, как начать тестирование. Это нужно сделать только один раз.
Ответ 4
Я изменил настройку тестового проекта в Intelij Idea. Перейдите в раздел "Модули → Зависимости", затем задайте область действия тестируемого проекта "Предоставляется".
Ответ 5
Я получил эту ошибку, потому что я работал с Guava, а Espresso также содержит Guava.
Если вы используете Gradle и Android Studio, вы можете исключить пакеты из зависимостей следующим образом:
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
exclude group: 'com.google.guava'
}
Ответ 6
Снимите флажки (в моих карточках и баннерах сервисов Google) со вкладки "Заказ и экспорт" в пути создания Java Project в Eclipse. Но пусть они будут добавлены на вкладке "Библиотеки". Нажмите "ОК", "Очистите проекты" и выполните сборку. Оно работает.
Ответ 7
У меня иногда возникает эта ошибка. Только проект build- > clean помог мне
Ответ 8
Если вам не требуется устройство с низкой версией API (< = 19), вы можете оставить транзитивные зависимости и создать эмулятор с более высокой версией API.
Это происходит только на устройствах, API которых ниже Lollipop (API 21). Запуск тестов на эмуляторы выше/равные API 21 работает нормально, без проблем.