当前位置:编程学习 > JAVA >>

空指针异常问题

serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());
   这句报空指针  我该在哪里找错误呢  而且空指针异常  我不会修改    ? --------------------编程问答-------------------- tid为空 没有参数   --------------------编程问答-------------------- 你从那儿传参数过来的啊? --------------------编程问答-------------------- 这句话中的每个对象和属性都检查一遍,都有可能为空 --------------------编程问答-------------------- 请把包含这个方法调用的方法体和相应异常贴出来 --------------------编程问答-------------------- 加一个断点看看那里是空,楼上回答都差不多了 --------------------编程问答-------------------- 我知道   是getuser().getid().的原因  可是我不知道  该怎么修改   我改了以后总是  用户不存在   --------------------编程问答-------------------- 这用问题都是要判断是否非空的。养成良好的习惯,bug就少了 --------------------编程问答-------------------- 给出异常内容,不要凭空猜测,你给的代码能出现空指针的地方太多 --------------------编程问答-------------------- public String execute() throws Exception {
try {

/** 组装验签源数据  **/
StringBuffer sb=new StringBuffer();
sb.append(citylifeid).append("|").append(citylifename).append("|").append(bankId).append("|").append(sbtId).append("|").append(client).append("|").append(bindNo);

/** 数据验签  **/
serviceManager.getTdbcServiceCityLife().checkSign(signMsg, sb.toString());

/** 获取商户绑定前的临时数据  **/
Shopbindtemp shopbindtemp = serviceManager.getShopService().getShopBindTemp(sbtId);
if(null == shopbindtemp){
this.addActionError("获取商户绑定前的临时数据失败");
return ERROR;
}

if(citylifeid != shopbindtemp.getShop().getId()){
this.addActionError("银行回传信息的商户ID与绑定临时数据不对应,无法完成绑定");
return ERROR;
}

if(bankId != shopbindtemp.getBank().getId() || bankId != shopbindtemp.getBank().getId()){
this.addActionError("银行回传信息的银行ID与绑定临时数据不对应,无法完成绑定");
return ERROR;
}

/** 商户绑定账号  赵健编写**/
serviceManager.getUserFirstService().bindShopsAccount(citylifeid, bankId, bindNo);

/** 商户申请特约商户 赵健编写 **/
serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());
} catch (ServiceException e) {
this.addActionError(e.getMessage());
return ERROR;
} --------------------编程问答-------------------- java.lang.NullPointerException
com.citylife.action.shop.BindBankCallbackAction.execute(BindBankCallbackAction.java:127)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
com.citylife.action.interceptor.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:63)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersI --------------------编程问答-------------------- com.citylife.action.shop.BindBankCallbackAction.execute(BindBankCallbackAction.java:127)
127行,仔细debug下,观察每个对象及其方法返回是否为null --------------------编程问答-------------------- com.citylife.action.shop.BindBankCallbackAction.execute(BindBankCallbackAction.java:127)
你的第127行是serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());
应该是你的getUser()为null,你的getUser()是怎么得到User的。

另外大部分的空指针就像 类.属性/方法 时,类没有实例话,当然不能调用类的属性和方法了。所以就会报空指针异常 --------------------编程问答-------------------- /** 商户绑定账号  赵健编写**/
serviceManager.getUserFirstService().bindShopsAccount(citylifeid, bankId, bindNo);

/** 商户申请特约商户 赵健编写 **/
serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());

你的这两行代码比较 上一行不错,下一行错了,所以猜测是你的getUser().getId()的getUser()错误或toSpecialShops(x,x,x)内部错误 --------------------编程问答--------------------

if(getUser().getId() != null && !"".equals("getUser().getId()")) {
            serviceManager.getUserFirstService().
            toSpecialShops(citylifeid, bankId, getUser().getId());
        }
--------------------编程问答-------------------- public void toSpecialShops(long shopId, long bankId, long userId) throws ServiceException;

/**
 * 预添加用户首次登录
 * @param user 单点用户
 * @return 本地用户
 * @throws ServiceException 
 */
User perFirstLogin(BelinkUser user, String key) throws ServiceException;

/**
 * 登出
 * @param userId 本地用户id
 */
void logout(long userId);
}  
--------------------编程问答-------------------- 看你写代码挺有规范的,怎么连这种问题也排除不了呢,悲催啊 --------------------编程问答-------------------- 设置断点 debug
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,