0

我在市场上有一些应用程序,最近我收到了一些提供堆栈跟踪的错误报告。我不太明白如何阅读和理解它们,所以我实际上可以解决这个问题。

下面是其中的一条痕迹:

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.emsprotocols.nycemsprotocols/com.emsprotocols.nycemsprotocols.ConnectivitCheck}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at     com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
... 11 more

我不确定这是 1 个错误还是 2 个甚至更多。而且我不确定如何解决这个问题。

4

3 回答 3

3

调试是为了找到原因,所以寻找这一行:

Caused by: java.lang.NullPointerException
at     com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)

然后查看该文件的第 21 行。对于没有指针的语言,Java 肯定会出现很多空指针异常。通常发生的情况是,在底层实现中,对象变成了数据结构的指针。当您调用对象的方法时,即

myObject.spindle()

VM 跟随跟踪 myObject 的指针,期望找到一个数据结构,并期望该结构中的一个整体将其引导至称为主轴()的方法的代码。

问题是如果 myObject 为空,那么实际上没有数据结构可用于查找主轴()方法。你已经要求它做不可能的事——没有异常处理,程序就无法继续。

最常见的是,一个对象为 null 的原因是您已经从其他东西中分配了您的对象,而该对象无法给您一个,因此返回 null。

解决您的问题通常遵循以下三个课程中的一个或多个:

  • 找出为什么你的对象为空,并修复它
  • 在您尝试调用其任何方法或访问其字段之前测试您的对象是否不为空
  • 处理异常——即告诉程序在遇到这种情况时如何恢复
于 2012-04-30T01:44:23.640 回答
2

com.emsprotocols.nycemsprotocols.ConnectivitCheck由于 NullPointerException ,应用程序无法加载活动:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.emsprotocols.nycemsprotocols/com.emsprotocols.nycemsprotocols.ConnectivitCheck}:java.lang.NullPointerException

在第 21 行的 onCreate 方法中引发了异常:

引起:
com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)处的 java.lang.NullPointerException

这实际上是一个错误,它被另一个错误包裹(被NullPointerException包裹RuntimeException

于 2012-04-30T01:34:55.007 回答
2

在之后找到你的包名at,这里是

at     com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)

这意味着第 21 行ConnectivityCheck.java有问题,请尝试修复它并继续。

于 2012-04-30T01:35:39.717 回答