Я пытаюсь портировать: Apache Qpid Client, JMS и JNDI - на Android. Я могу получить успешную компиляцию / сборку моего проекта QpidDroid при запуске целей установки ant debug после передачи Dalvik параметра --core-library, чтобы разрешить пакеты javax для JMS / JNDI. Я надеюсь сделать это, прежде чем рассматривать переупаковку / рефакторинг классов javax в другое пространство имен пакетов с использованием jarjar.
Я думаю, что это юридически законно, потому что я использую старый / первый отдельный JNDI jar, в настоящее время предоставленный веб-сайтом Oracle. Я использую JMS-jar, который поставляется с Apache Geronimo в Qpid, но я думаю, что он также доступен от Oracle для отдельной загрузки. Моя среда разработки использует платформу Android 2.1 и jdk 1.6.
Проблема в том, что в настоящее время кажется, что он не может создать экземпляр моей собственной фабрики соединений jndi: PropertiesFileInitialContextFactory. Это исходный файл .java в моем проекте QpidDroid (не .class в jar-файле libs) (я извлек класс из jar-файла qpidClient).
Может ли кто-нибудь иметь представление о том, почему его нельзя создать здесь? Мне было интересно, может ли proguard нарушать рефлексию, ... но я строю это с помощью задачи отладки муравья ... поэтому я думаю, что proguard вообще не должен работать. Исключение возникает, когда я запускаю установленное приложение на эмуляторе. У меня служба Apache Qpid работает на той же машине с портом по умолчанию, который она использует.
01-18 18:05:16.966: W/System.err(296): [Root exception is java.lang.ClassNotFoundException: org.apache.qpid.jndi.PropertiesFileInitialContextFactory]javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.qpid.jndi.PropertiesFileInitialContextFactory
01-18 18:05:17.006: W/System.err(296): at javax.naming.spi.NamingManager.getDefaultInitialContextFactory(NamingManager.java:720)
01-18 18:05:17.006: W/System.err(296): at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:768)
01-18 18:05:17.016: W/System.err(296): at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:169)
01-18 18:05:17.016: W/System.err(296): at javax.naming.InitialContext.<init>(InitialContext.java:146)
01-18 18:05:17.016: W/System.err(296): at org.rif.QpidDroid.Hello.runTest(Hello.java:56)
Спасибо за любые советы!