2011-07-13 49 views
2

我收到了很少在此代码中引发的NullPointerException。这是视频流应用程序的一部分,该应用程序同时使用多个RTSP流,并定期断开连接并重新连接(即基于用户)。从Socket.getInputStream抛出的NullPointerException()

private void openSocket() throws IOException { 
    rtspSocket = new Socket(); 
    rtspSocket.connect(new InetSocketAddress(ip, port), connectionTimeout); 
    rtspSocket.setSoTimeout(readTimeout); 

    // NullPointerException on next line 
    bufStream = new BufferedInputStream(rtspSocket.getInputStream()); 
} 

堆栈跟踪如下:

我的谷歌福已拉起this bug from Apr 2000this bug from Nov 1997,但我不相信他们是适用的。我也曾漫游过我正在构建的JDK 1.6 update 7代码,并注意到只有在PlainSocketImpl中包含的FileDescriptor为空时才会引发此异常。然后将该值从SocketInputStream构造函数传递给FileInputStream构造函数。

缺少捕获NPE并抛出IOException,有什么我可以在这里做的吗?我的怀疑是这是由某种IOException将FileDescriptor设置为null引起的。如果抛出IOException,会更容易!

回答

1

第一个错误看起来非常相关。第二个,并非如此,现在通过添加shutdownOutput()来解决这个问题。

+0

它确实显得相关,除了我没有使用JMF。我无法在JDK上找到有关此行为的任何错误报告,这表明它不是固定的。错误评估建议赶上NPE,所以我想这是我的最佳选择。 – Bringer128

0

如果您怀疑JVM中存在错误,我会尝试使用Java 6 update 26而不是更新7.如果这能解决问题,那么它可能是一个错误。

+0

谢谢,但我的项目没有在没有大规模回归和集成测试活动的情况下更新JVM。你不知道,虽然=) – Bringer128

+0

我不是建议你做一个大规模的回归测试。我建议你测试这个问题。只有如果您确定这会解决问题,您是否考虑进行适当的升级。 ;) –

相关问题