2012-01-19 16 views
0

Apache Qpidクライアント、JMS、およびJNDIをAndroidに移植しようとしています。 Dalvikの--core-libraryパラメータを渡した後、antデバッグインストールターゲットを実行しているときに、JMS/JNDIのjavaxパッケージを許可するために、私のQpidDroidプロジェクトのコンパイル/ビルドを成功させることができました。 jarjarを使用してjavaxクラスを別のパッケージの名前空間に再パッケージ化/リファクタリングすることを検討する前に、これを行うことを望んでいます。Android:Android forcingでリフレクトからJNDIファクトリをインスタンス化するjavax

私はOracleのWebサイトで現在提供されている古い/最初のJNDI jarを使用しているため、これは合法だと思います。 QpidでApache Geronimoに付属しているJMS jarを使用していますが、Oracleから別のダウンロードとして入手できると思います。私の開発環境はAndroidプラットフォーム2.1とjdk 1.6を使用しています。

問題は、現在、私のカスタムjndi接続ファクトリをインスタンス化できないようです:PropertiesFileInitialContextFactory。これはQpidDroidプロジェクトの.javaソースファイルです(libs jarの.classではありません)(私はqpidClient jarからクラスを抽出しました)。

ここでインスタンス化できない理由を知りたい人はいますか?私はプロガードがリフレクションを破るかもしれないのだろうかと思っていましたが、私はデバッグ・アント・タスクでビルドしています。だから私はプロガードが全く動かないと思っています。エミュレータでインストールされたアプリケーションを実行すると例外が発生します。 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) 

ありがとうございました!

答えて

0

私は、問題を見つけたと思う - Androidは以前のバージョン2.3

http://code.google.com/p/android/issues/detail?id=6636

に反射して、それのバグを持っている私は、Android 2.3への私のQpidDroidプロジェクトを移植し、JNDIが正常にInitialContextを作成しているように見えます今すぐQPID接続パラメータで

関連する問題