NullPointerException - 如何发生这种情况?

时间:2011-05-24 13:40:27

标签: java android nullpointerexception

代码看起来像这样:

// This is com.n.common.Networking.downloadBmp( ) function
// ...
byte[] data = inputStreamToByteArray(new PatchedInputStream(connectJava(url)));

// if the data is null in this moment - return;
if (data == null)      // <--- line 185
    return null;
// ...

这样的例外:

ERROR/AndroidRuntime(4526): Uncaught handler: thread pool-1-thread-2 exiting due to uncaught exception
ERROR/AndroidRuntime(4526): java.lang.NullPointerException
ERROR/AndroidRuntime(4526):     at com.n.common.Networking.downloadBmp(Networking.java:185)
ERROR/AndroidRuntime(4526):     at com.n.common.AsyncNetworking$3.run(AsyncNetworking.java:203)
ERROR/AndroidRuntime(4526):     at java.lang.Thread.run(Thread.java:1060)
ERROR/AndroidRuntime(4526):     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
ERROR/AndroidRuntime(4526):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
ERROR/AndroidRuntime(4526):     at java.lang.Thread.run(Thread.java:1060)

这怎么可能?

编辑:很可能是由于使用Eclipse“组织导入”功能,它改变了行号 - 并将较新的代码版本与旧的部署版本进行比较。请大家帮忙。

3 个答案:

答案 0 :(得分:2)

还有其他事情,行无法生成NPE。您很可能有一个过时的构建,它在日志中报告错误的行号。

答案 1 :(得分:2)

应该是部署问题或与保存文件和多个版本相关的问题。抛出异常的代码必须与您发布的代码不同。

尝试清理/重新编译/(重新部署)并查看行号是否更改

答案 2 :(得分:0)

一个快速的建议是,问题出在“inputStreamToByteArray(new PatchedInputStream(connectJava(url)));”。

我也想知道“connectJava”是什么?这是你创建的方法吗?如果是,请提供它,因为我怀疑它导致了问题。