2012-01-19 80 views
0

我試圖將端口:Apache Qpid客戶端,JMS和JNDI移植到Android。在傳遞Dalvik --core-library參數以允許JMS/JNDI的javax包之後運行ant調試安裝目標時,我能夠成功編譯/構建我的QpidDroid項目。我希望在考慮使用jarjar重新打包/重構javax類到不同的包名稱空間之前這樣做。Android:從Android反射實例化JNDI工廠強制使用javax

我認爲這在法律上是合法的,因爲我使用的是Oracle網站目前提供的舊的/第一個獨立的JNDI jar。我在Qpid中使用Apache Geronimo附帶的JMS jar,但我認爲它也可以從Oracle作爲單獨的下載獲得。我的開發環境使用Android平臺2.1和jdk 1.6。

問題是,它似乎目前不能實例化我的自定義jndi連接工廠:PropertiesFileInitialContextFactory。這是我的QpidDroid項目中的一個.java源文件(不是libs jar中的.class)(我將這個類從qpidClient jar中提取出來)。

有人會有任何想法,爲什麼它不能在這裏實例化?我想知道proguard是否會突破反思,但是我正在使用debug ant任務構建它,所以我認爲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) 

感謝您的任何提示!

回答