Привет.
У меня есть три проекта на Java:
- Движок
- Игра
- Нативное приложение на NDK
Движок — он и есть движок, предоставляет всякую инфраструктуру, абстракцию от платформы, две реализации рендеринга, для десктопов на JOGL и для андроидов на OGLES 2.0.
Игра — условно независимое от платформы приложение, реализованное в терминах движка.
Нативное приложение — самая простая прила на NDK, реализованная по
официальному туториалу, в которую внедрена игра.
Игра протестирована на десктопе, пробуем поотлаживать её на виртуальном девайсе. На этом месте начались
странности.
Could not find class 'com.GO.GOHot', referenced from method com.issmd.ngo.ngo_1.NGOSurfaceView.<init>
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.GO.GOHot
at com.issmd.ngo.ngo_1.NGOSurfaceView.<init>(NGOSurfaceView.java:12)
at com.issmd.ngo.ngo_1.FullscreenActivity.onCreate(FullscreenActivity.java:58)
[...]
com.GO.GOHot — это класс приложения из проекта игры.
Зависимости проектов выглядят примерно так (два испробованных варианта):
- Движок находится в class path у игры, игра находится в class path у нативного приложения.
- Движок находится в class path у игры, игра скомпилена в jar и закинута в папку lib нативного приложения.
Судя по тому, что Eclipse (а дело происходит в нём) видит все классы (интеллисенс, все дела), подключил я всё более-менее правильно. Но при попытке запустить приложение на девайсе программа почему-то порывается искать класс в рантайме, откуда-то его грузить, показывает всем java.lang.NoClassDefFoundError и умирает. Абсолютно бредовая ситуация, по-моему, ведь вот же код, возьми его в compile/link time, слинкуй себе на радость и работай на радость мне.
Да, я смотрел
всякие тексты в интернете, пробовал следовать им (про Order & Export, частности), но ничего не помогло.
Тестирую я на AVD и на Android x86 4.0.1 на VMWare. Простейшее приложение на OGLES2.0 там работает ок.
Я новичок в Java & NDK, потому, возможно, наделал кучу дурацких ошибок, поправьте меня, пожалуйста.
Также буду признателен за любые рандомные советики о том, как вообще принято организовывать такого рода проекты.
Заранее спасибо.