Почему я получаю ошибку незаконного доступа при выполнении моих тестов Android? - PullRequest
6 голосов
/ 12 марта 2010

Я получаю следующую трассировку стека при запуске моих тестов Android на Эмуляторе:

java.lang.NoClassDefFoundError: client.HttpHelper
at client.Helper.<init>(Helper.java:14)  
at test.Tests.setUp(Tests.java:15)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:164)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:151)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:425)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1520)
Caused by: java.lang.IllegalAccessError: cross-loader access from pre-verified class
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClass(DexFile.java:193)  
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
... 11 more

Я запускаю свои тесты из дополнительного проекта.И, похоже, есть проблемы с загрузкой классов из другого проекта.Раньше я проводил тесты, но теперь они проваливаются.Тестируемый проект выполняется без проблем.

Строка 14 вспомогательного класса:

this.httpHelper = new HttpHelper(userProfile);

Я запускаю класс HttpHelper, отвечающий за выполнение httpqueries.Я думаю, что каким-то образом этот вспомогательный класс больше не доступен, но я понятия не имею, почему.

1 Ответ

4 голосов
/ 18 июня 2012

У меня была та же проблема, но в моем случае я добавлял ссылку на библиотеку как в приложение, так и в тестовый проект.

Удалив ссылку на библиотеку из тестового проекта и оставив только ссылку на проект приложения, проблема была решена. Исключением java.lang.IllegalAccessError и сообщением «Класс, решенный с помощью неожиданного DEX» стали подсказки, помогающие решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...