我有一个主班:
public class Retrigger {
public static void main(String[] args){
Long i= 97944605L;
com.armus.flow.Implement rdf = new com.armus.flow.Implement();
try {
rdf.retrfail(i);
}
catch(Throwable e){
System.out.println("In exception a = "+e+" "+i);
e.printStackTrace();
return;
}
}
}
我正在调用retrfail
类的方法Implement
并传递一个长值:
import com.armus.common.Dsessionservice;
public class Implement
extends Remote
implements DMSer, Ajaxser {
private Dsessionservice flowservice;
private Dsession getDsession(long sessionId)
throws ServiceException {
try {
dss = this.flowservice.getprocessname(Long.valueOf(sessionId));
}
catch (ServerException e) {
//some code
}
//some code
}
public void retrfail(long sessionId) {
Dsession dss = getDsession(sessionId);
// some code
}
}
实现类将ID传递给其他Dsessionservice接口以获取进程名称。
public abstract interface Dsessionservice
{
public abstract Dsessionservice getprocessname(Long paramLong)
throws ServerException;
}
程序编译正常。但是在下面一行运行程序时,我得到了java.lang.nullpointerexception
dss = this.flowservice.getprocessname(Long.valueOf(sessionId));
我在这里做错了什么。
有人可以帮忙吗?
答案 0 :(得分:0)
您忘记初始化flowserive
变量。
在Java中,当您声明诸如private Dsession flowserive;
之类的变量时,该变量未初始化为任何内容,因此没有成员方法getprocessname(...)
尝试在不存在该方法时访问该方法将引发{{1 }}。
尝试这样的事情:
java.lang.nullpointerexception
对不起,我不知道您的Dsession类,所以也许您需要更改它才能正确初始化Dsession对象...