Подтвердить что ты не робот

Java.lang.IllegalAccessError: класс ref в предварительно проверенном классе разрешен для неожиданной реализации при запуске тестового проекта?

Я реализовал проект, используя стороннюю библиотеку (zxing) после того, как проект реализации работает нормально, после того как я написал один тестовый проект на unit test мой проект. После запуска тестового проекта основной проект, классы и его методы не приводят к ошибкам, но если какой-либо класс среды zxing утилит внутри этого метода основного проекта, получив указанную выше ошибку во время выполнения, еще не компилируя время. Пожалуйста, скажите мне, как решить эту проблему?

4b9b3361

Ответ 1

Вы получаете эту ошибку из-за ссылки сторонней библиотеки, добавленной два раза. Вы добавили путь приложения в путь сборки тестового проекта. поэтому ссылка на библиотеку автоматически добавляется в тестовый проект ". Удалите ссылку на библиотеку в тестовом проекте в свойствах → android.

FYI, нажмите здесь для подробного объяснения.

Ответ 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 работает нормально, без проблем.