【问题标题】:NullPointerException - how this could happen?NullPointerException - 这怎么会发生?
【发布时间】:2011-05-24 13:40:26
【问题描述】:

得到如下代码:

// 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“组织导入”功能,该功能改变了行号 - 并将较新的代码版本与旧部署的代码版本进行比较。感谢大家的帮助。

【问题讨论】:

  • 必须在if (data == null)检查之外。
  • Networking.java 第 185 行是什么?
  • 是来自 Networking.java 的代码吗?
  • 不,不是。我应该张贴截图来证明吗? :) @Nanne:我的班级,你在上面看到的片段。
  • @Kocus,NullPointerException 可能被PatchedInputStream 构造函数、connectJava 方法或inputStreamToByteArray 抛出。我建议您查阅他们各自的文档。

标签: java android nullpointerexception


【解决方案1】:

应该是部署问题或与保存文件和具有多个版本有关的问题。引发异常的代码的第 185 行必须与您发布的代码不同。

尝试清理/重新编译/(重新部署),看看行号是否改变

【讨论】:

  • 问题是我无法重现此异常。它只是发生在正常的应用程序使用中。
  • 一个常见的“部署问题”是编译错误,它会导致 android 运行旧版本。反正我经常发生。
  • 好的,我知道了。由于使用了 Eclipse 的“组织导入”功能,删除了一些导入,因此它是可行的,现在它正在将部署的代码与组织的代码进行比较。
【解决方案2】:

其他事情正在发生,那行不能产生 NPE。很可能您有一个陈旧的构建,它在日志中报告了错误的行号。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 我只是好奇这样的代码怎么会在该行中抛出 NPE。好的,错误可能(但不太可能)出现在我的以下之一中:inputStreamToByteArray()PatchedInputStreamconnectJava( )
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    相关资源
    最近更新 更多