У меня есть андроидный libary project - MonitoringModel
- который зависит от обычного проекта java - Helpers
(зависимость была установлена в пути сборки java > Проекты. Проект Helpers
был отмечен на вкладке "Заказ и экспорт" MonitoringModel
). MonitoringModel
создает банку, которую я отбрасываю в папку libs проекта сервлета, как описано здесь. Все было хорошо, пока сервлет не нуждался в методе из проекта Helpers
:
Caused by: java.lang.NoClassDefFoundError: gr/uoa/di/java/helpers/Utils
at gr.uoa.di.monitoring.model.Battery$BatteryFields$1.parse(Battery.java:59)
at gr.uoa.di.monitoring.model.Battery$BatteryFields$1.parse(Battery.java:1)
at gr.uoa.di.monitoring.model.Battery.parse(Battery.java:117)
... 24 more
Caused by: java.lang.ClassNotFoundException: gr.uoa.di.java.helpers.Utils
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
Тогда я понял, что экспортированная банка (из MonitoringModel
) не имела пакетов Helpers
. Проект Helpers
не создает никакой банки, поэтому я попытался добавить его папку bin/
как Добавить классную папку)
добавив его также в вкладку "Заказ и экспорт":
но до сих пор нет радости.
Итак, как мне настроить это?
RECAP: Что мне нужно - это добавить обычный проект java в проект библиотеки андроидов и как-то скомпилировать его в банке проекта андроидной библиотеки. Проблема заключается не в том, что классы (java) не экспортируются - так как методы, которые используют эти классы Java, не скомпилированы в банке правильно. Поэтому, когда они называются, исключение выше бросается. Метод Battery$BatteryFields$1.parse
здесь.
NB: добавление проекта Helpers
непосредственно в проект сервлетов не предотвращает исключение. Исключение выбрано, потому что, когда MonitoringModel.parse()
вызывает Helpers.listToString()
, последнего нигде не найти в monitoringmodel.jar
На данный момент мне пришлось просто добавить (см. "Копировать вставить" ) пакеты Helpers
в MonitoringModel
.
Вам нужно скомпилировать ваш Java-проект помощника и экспортировать JAR, как обычный Java JAR
Затем вы должны добавить эту JAR для просмотра папки LIBS для Android-библиотеки Android.
Теперь вы можете добавить мониторную библиотеку Android в другой проект (из библиотеки Android Libraries), и у вас будут источники, которые вам нужны.
Проблема заключается в том, что вкладка "Проект" больше не компилирует связанный проект с некоторой версией ADT, поэтому она бесполезна.