在本文中,我们将详细介绍如何在吸气剂链中跟踪NullPointerException的各个方面,并为您提供关于吸气剂怎么激活的相关解答,同时,我们也将为您带来关于android–来自Parcel.re
在本文中,我们将详细介绍如何在吸气剂链中跟踪NullPointerException的各个方面,并为您提供关于吸气剂怎么激活的相关解答,同时,我们也将为您带来关于android – 来自Parcel.readException的NullPointerException(等)、Android----java.lang.NullPointerException:---java.lang.NullPointerException:、C3P0 的 Exception in thread "Timer-6" java.lang.NullPointerException 如何解决、Exception in thread "main" java.lang.NullPointerException的有用知识。
本文目录一览:- 如何在吸气剂链中跟踪NullPointerException(吸气剂怎么激活)
- android – 来自Parcel.readException的NullPointerException(等)
- Android----java.lang.NullPointerException:---java.lang.NullPointerException:
- C3P0 的 Exception in thread "Timer-6" java.lang.NullPointerException 如何解决
- Exception in thread "main" java.lang.NullPointerException
如何在吸气剂链中跟踪NullPointerException(吸气剂怎么激活)
如果在这样的调用中收到NullPointerException:
someObject.getSomething().getSomethingElse(). getAnotherThing().getYetAnotherObject().getValue();
我得到了一个无用的异常文本,例如:
Exception in thread "main" java.lang.NullPointerExceptionat package.SomeClass.someMethod(SomeClass.java:12)
我发现很难找出哪个调用实际上返回了null,经常发现自己将代码重构为如下形式:
Foo ret1 = someObject.getSomething();Bar ret2 = ret1.getSomethingElse();Baz ret3 = ret2.getAnotherThing();Bam ret4 = ret3.getYetAnotherOject();int ret5 = ret4.getValue();
然后等待更具描述性的NullPointerException,该异常告诉我要查找的行。
你们中的某些人可能会认为,连接吸气剂是不好的风格,无论如何都应避免,但是我的问题是:我可以在不更改代码的情况下找到错误吗?
提示:我正在使用eclipse,我知道什么是调试器,但是我无法弄清楚如何将其应用于问题。
我对答案的结论:
有些答案告诉我,我不应该一个接一个地链接获取器,有些答案说明了如果我不遵守该建议,该如何调试代码。
我接受了一个答案,该答案教会了我何时绑定吸气剂的确切时间:
- 如果它们不能返回null,则可以根据需要链接它们。无需检查!= null,无需担心NullPointerExceptions(请 注意,链接仍然违反Demeter法则,但我可以接受 )
- 如果它们可能返回null,请永远不要,永远不要将它们链接起来,并对每个可能返回null的值执行一次null值检查。
这使有关实际调试的任何好的建议都没有用。
答案1
小编典典答案取决于您如何查看吸气剂(的合同)。如果他们可能返回null
,则应每次真正检查返回值。如果该getter不应该返回null
,则该getter应该包含一个检查并抛出一个异常(IllegalStateException
?)而不是null
return,您应保证永不返回。stacktrace将指向您确切的getter。您甚至可以将获取器的异常状态置于异常消息中。
android – 来自Parcel.readException的NullPointerException(等)
FATAL EXCEPTION: main java.lang.NullPointerException at android.os.Parcel.readException(Parcel.java:1437) at android.os.Parcel.readException(Parcel.java:1385) at com.yourpackage.ipc.IYourClass$Stub$Proxy.yourMethod(IYourClass.java:488) at com.yourpackage.ipc.YourClassShim.yourMethod(YourClassShim.java:269)
我找到了一堆相关的问题,但没有一个回答“你如何调试这个”.所以我正在提出这个问题/答案.
通过查看android源码here和here,你会发现它可以抛出任何这些(NullPointerException就是我所拥有的):
SecurityException(msg); BadParcelableException(msg); IllegalArgumentException(msg); NullPointerException(msg); IllegalStateException(msg); RuntimeException("UnkNown exception code: " + code + " msg " + msg);
但究竟是什么导致了这些?
解决方法
那么最初的例外来自哪里?好吧,在YourClass.yourMethod()的实际实现的某个地方 – 不在任何parcelable或IPC代码中.所以去那里,将整个方法包装在try / catch中,并记录你抓到的任何内容.
(或者如果你有远程进程断点工作,那么在那里设置一个断点.)
Android----java.lang.NullPointerException:---java.lang.NullPointerException:
2021-03-06 13:26:12.274 8544-8544/com.example.helloworld E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.helloworld,PID: 8544
java.lang.NullPointerException:: Unable to start activity ComponentInfo{com.example.helloworld/com.example.helloworld.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.CheckBox.setonCheckedchangelistener(android.widget.CompoundButton$OnCheckedchangelistener)' on a null object reference
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3897)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.CheckBox.setonCheckedchangelistener(android.widget.CompoundButton$OnCheckedchangelistener)' on a null object reference
at com.example.helloworld.MainActivity.setListener(MainActivity.java:161)
at com.example.helloworld.MainActivity.onCreate(MainActivity.java:138)
at android.app.Activity.performCreate(Activity.java:8085)
at android.app.Activity.performCreate(Activity.java:8073)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3870)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
2021-03-06 13:26:12.282 8544-8544/com.example.helloworld I/Process: Sending signal. PID: 8544 SIG: 9
检查一下xml文件定义的checkBox的id和在activity里获取的id是否一致
问题出在运行时找不到对应的checkBox
Process: com.example.helloworld,PID: 21319
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.helloworld/com.example.helloworld.MoreActivity}: java.lang.illegalaccessexception: java.lang.class<com.example.helloworld.MoreActivity> is not accessible from java.lang.class<android.app.AppComponentFactory>
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3815)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: java.lang.illegalaccessexception: java.lang.class<com.example.helloworld.MoreActivity> is not accessible from java.lang.class<android.app.AppComponentFactory>
at java.lang.class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
at android.app.Instrumentation.newActivity(Instrumentation.java:1264)
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3800)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
这是在清单文件没有注册activity
所有的activity类都必须是public 的 不然清单文件找不到,所以就无法运行
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference;
这和问题一是一样的,因为找不到对应的id
博主链接:
页面布局常用:
android:id 为控件指定相应的ID
android:text 指定控件的文本,置尽量使用strings.xml
android:grivity 指定控件的基本位置 ,比如举重,居右,
android:padding 指定控件的内边距,控件当中的内容
android:singleLine 如果设置为真的话,则将控件的内容在同一行当中显示
android:layout_above 将该空间的底部至于给定ID的空间之上
android:layout_below: 将该控件的顶部至于给定ID的控件之下
android:layout_toLeftOf: 将该控件的右边缘和给定ID的控件的左 边缘对其
android:layout_toRightOf 将该控件的左边缘和给定的ID的控件的右边缘对齐
android:layout_alignBaseLine 该控件的baseline和给定ID的控件的Baseline对齐
android:layout_alignBottom 将该控件的底部边缘与给定ID控件的底部边缘
android:layout_alignLeft 将该控件左边缘与给定ID控件的左边缘对齐
android:layout_alignRight 将该控件的右边缘与给定ID控件的右边缘对齐
android:layout_alignTop 将给定控件的顶部边缘与给定ID控件的顶部对齐
android:alignParentBottom 如果该值为true 则将该控件的底部和父控件的底部对齐
android:layout_alignParentLeft 如果该值为true则将该控件的左边与父控件的左边对齐
android:layout_alignParentRight 如果该值为true则将该控件的右边与父控件的右边对齐
android:layout_alignParentTop 将控件的顶部与父控件的顶部对齐
android:layout_centerHorizontal 如果值为真,该控件将被至于水平方向的中央
android:layout_centerInParent 将被至于父控件水平方向和垂直都居中
android:layout_centerVertical 将被至于垂直方向的中央
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离父控件底边缘的距离
android:layout_marginLeft 离父控件左边缘的距离
android:layout_marginRight 离父控件右边缘的距离
android:layout_marginTop 离父控件上边缘的距离
EditText的android:hint
设置EditText为空时输入框内的提示信息。
android:gravity
android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity=”right”则button上面的文字靠右
android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,
android:layout_gravity=”right”则button靠右
android:layout_alignParentRight
使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
padding和margin的区别:
所以padding是定义控件自己的内容和控件边缘之间的距离,padding有填充填料的意思,而margin是在说控件的四个边缘之外的距离,指的是和别的控件之间的距离,margin有边缘,页面留白的意思
原文链接:https://blog.csdn.net/qq_28296925/article/details/51115132
C3P0 的 Exception in thread "Timer-6" java.lang.NullPointerException 如何解决
高春辉、王春生、朱峰:关于开源创业的 15 件小事
Exception in thread "main" java.lang.NullPointerException
/*** 功能:约瑟夫问题
*/
package com.sole;
public class Demo04{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CycLink cyclink = new CycLink();
cyclink.setLen(5);
cyclink.createLink();
cyclink.showList();
}
}
class Child{
int num;
Child nextChild = null;
public Child( int num ){
this.num = num;
}
}
//环形链表
class CycLink{
//先定义一个指向链表第一个小孩的引用,不能动
Child firstChild = null;
Child temp = null;
int len = 0; //表示有几个小孩
//设置链表大小
public void setLen( int len ){
this.len = len;
}
//初始化环形链表
public void createLink(){
for( int i =0; i<=len; i++ ){
if( i == 1 ){
//创建第一个小孩
Child ch = new Child( i );
this.firstChild = ch;
this.temp = ch;
}else {
if( i == len ){
Child ch = new Child( i );
temp.nextChild = ch;
temp = ch;
temp.nextChild = this.firstChild;
}else{
//继续创建小孩
Child ch = new Child( i );
temp.nextChild = ch;
temp = ch;
}
}
}
}
//打印环形链表
public void showList(){
Child temp = this.firstChild;
do{
System.out.println( temp.num );
temp = temp.nextChild;
}while( temp != this.firstChild );
}
}
总是出现这个错误,找不出来,请高手帮忙指点
今天关于如何在吸气剂链中跟踪NullPointerException和吸气剂怎么激活的讲解已经结束,谢谢您的阅读,如果想了解更多关于android – 来自Parcel.readException的NullPointerException(等)、Android----java.lang.NullPointerException:---java.lang.NullPointerException:、C3P0 的 Exception in thread "Timer-6" java.lang.NullPointerException 如何解决、Exception in thread "main" java.lang.NullPointerException的相关知识,请在本站搜索。
本文标签: