Netty 通信クラスは標準の Java アプリケーションでは正常に動作しますが、Android アプリケーションで実行すると NullPointerException が発生します。
私の質問は、Netty の専門家がこれを解決するための正しい方向性を指摘できるかどうかです。それは Android との非互換性の問題ですか、それともスタック トレースで、私が間違っている可能性があることを示している可能性がありますか?
私は使っているnetty-3.4.0.Final.jar
にインターネット権限を追加しましたAndroidManifest.xml
。
Androidアプリで(Nettyなしで)生のソケットだけを使用してサーバーに正常に接続できることを確認しました。
呼び出した後bootstrap.connect()
、2 つのスレッドのブレークポイントで実行を中断できます。1exceptionCaught()
つと 1 つchannelClosed()
。
以下のスタック トラックは、例外からのものですexceptionCaught()
。
このプロジェクトの完全なソースはcodeplex
、 にありelvemobileandroid project
ます。
例外が常にスローされるとは限らないことを示す可能性がある Android プロジェクトの動作を実際に見たことがあると思います。残念ながら、私はそれを再び機能させることができませんでした (プロジェクトに変更を加えていませんが)。
Thread [<1> main] (Suspended (breakpoint at line 172 in UptimeClientHandler))
UptimeClientHandler.exceptionCaught(ChannelHandlerContext, ExceptionEvent) line: 172
UptimeClientHandler(SimpleChannelUpstreamHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 117
DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline$DefaultChannelHandlerContext, ChannelEvent) line: 564
DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(ChannelEvent) line: 792
ReadTimeoutHandler(SimpleChannelUpstreamHandler).exceptionCaught(ChannelHandlerContext, ExceptionEvent) line: 143
ReadTimeoutHandler(SimpleChannelUpstreamHandler).handleUpstream(ChannelHandlerContext, ChannelEvent) line: 117
DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline$DefaultChannelHandlerContext, ChannelEvent) line: 564
DefaultChannelPipeline.sendUpstream(ChannelEvent) line: 559
Channels.fireExceptionCaught(Channel, Throwable) line: 533
NioClientSocketPipelineSink.connect(NioClientSocketChannel, ChannelFuture, SocketAddress) line: 152
NioClientSocketPipelineSink.eventSunk(ChannelPipeline, ChannelEvent) line: 97
DefaultChannelPipeline.sendDownstream(ChannelEvent) line: 574
Channels.connect(Channel, SocketAddress) line: 642
NioClientSocketChannel(AbstractChannel).connect(SocketAddress) line: 204
ClientBootstrap.connect(SocketAddress, SocketAddress) line: 230
ClientBootstrap.connect(SocketAddress) line: 183
ClientBootstrap.connect() line: 154
UptimeClient.run() line: 94
CommunicationTest.test() line: 32
ElveMobileActivity.onCreate(Bundle) line: 25
Instrumentation.callActivityOnCreate(Activity, Bundle) line: 1047
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2627
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125
ActivityThread$H.handleMessage(Message) line: 2033
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 868
ZygoteInit.main(String[]) line: 626
NativeStart.main(String[]) line: not available [native method]
これは、stackoverflow に関する私の最初の投稿です。他に提供できる情報があればお知らせください。
ありがとう