2010-11-27 5 views
1

У меня есть класс, который расширяет OrmliteSqliteOpenHelper, чтобы обеспечить модуль персистентности для приложения для Android. Проблема в том, что всякий раз, когда я обращаюсь к этому классу из тестового проекта в Eclipse, он выдает исключение NoClassDefFound. Исходный код выглядит точным, поскольку пакет импортируется, а Eclipse не выделяет, чтобы указать, что что-то пойдет не так, но это так.Ошибка NoClassDefFound с OrmliteSqliteOpenHelper

Вот кикер: не только все остальное в проекте прекрасно работает при доступе к тестовому проекту, но когда я перемещаю этот файл в тестовый проект вуаля, он отлично работает! Проблема в том, что он должен находиться в фактическом проекте, чтобы другие компоненты могли звонить ему. Кто-нибудь когда-либо сталкивался с этой ошибкой или имел какое-то представление о том, где я могу ошибиться?

Путь к классу устанавливается корректно, так как работают все остальные классы, и в тестовом проекте всегда добавлен основной проект в его путь к классу. Я также попытался переместить объект OrmliteSqliteOpenHelper во внутренний класс: это позволило внешнему классу быть видимым и затронутым, но как только он попытался создать экземпляр внутреннего класса, возникает одна и та же ошибка. Кроме того, если я копирую этот файл в оба проекта в одном пакете, возникает ошибка, указывающая, что «класс ref в предварительно проверенном классе разрешен до неожиданной реализации» всякий раз, когда что-то в основном проекте пытается получить доступ к этому классу. Ясно, что существует некоторая разница в том, как класс компилируется/обрабатывается между двумя проектами.

Я совершенно в тупике:/Спасибо за тонну за любую помощь!

+0

Кайл, в каком классе получить исключение NoClassDefFound? Базовый класс OrmliteSqliteOpenHelper или ваш подкласс? Можете ли вы опубликовать упорядоченную иерархию классов? – Gray 2010-11-27 13:03:26

ответ

0

Ну, друзья, я, кажется, взломал решение для этой проблемы: Я связал всю папку 'src' от основного проекта в проекте для тестового проекта. Теперь, когда он ищет поиск конкретного пакета, в котором находится мой файл, он сначала находит файл в своем собственном исходном дереве. Ура!

Почему это работает? У меня нет подсказки, возможно, кто-то мог бы рассказать нам об этом.
Это работает? На данный момент ...

0

Существует, как исправить эту проблему:

  • Удалить OrmLite из сборки Путь тестового проекта.
  • Экспортировать их из основного проекта.