在我的代碼中,我正在從數據庫構造一個圖形。 我的代碼的某些部分,以創建圖表(我沒有包括速記的SQL命令):線程「main」中的異常java.lang.NullPointerException
String node_label=null;
String node_type=null;
String edge_label=null;
String target;
String source;
String super_class=null;
String sub_class=null;
String table_trigger=null;
String trigger_name=null ;
String referenced_trigger=null;
String Sub_foreign_key=null;
for (int t = 0; t <=count_table-1 ; t++){
.
.
.
Sub_foreign_key=null;
sub_class=null;
sql="… ";
ResultSet rs4 = stmt.executeQuery(sql);
while(rs4.next()){
sub_class=rs4.getString(1);
}
rs4.close();
if(sub_class!=null){
sql="…. ";
ResultSet rs6 = stmt.executeQuery(sql);
while(rs6.next()){
super_class= rs6.getString(1);
Sub_foreign_key= rs6.getString(2);
}
rs6.close();
String s=sub_class+super_class;
Edge e3=g1.addEdge(s,sub_class, super_class, true);
e3.addAttribute("ui.label", "IS_A");
isDelete=null;
/********************/
sql=" ";
ResultSet rs11 = stmt.executeQuery(sql);
while(rs11.next()){
table_trigger=rs11.getString(2);
trigger_name= rs11.getString(1);
isDelete= rs11.getBoolean(3);
}
rs11.close();
/**********************/
sql="……";
ResultSet rs12 = stmt.executeQuery(sql);
while(rs12.next()){
referenced_trigger=rs12.getString(1) ;
}
rs12.close();
if(trigger_name!=null){
if(isDelete=true){
Node n7= g1.addNode(trigger_name);
n7.addAttribute("ui.label", "delete_event");
n7.setAttribute("type", "event");
n7.addAttribute("ui.style", "shape:triangle;");
Edge e10=g1.addEdge("s", table_trigger, trigger_name, true);
Edge e7=g1.addEdge("j", trigger_name, referenced_trigger, true);
}
}
}
然後我用這個圖來這種方式(一些commans隱藏):
for(int i=0;i<g1.getNodeCount();i++){
Node node=g1.getNode(i);
node_label=node.getAttribute("ui.label");
node_type=node.getAttribute("type");
if(node_type.equals("event")){
Edge efrom= node.getEdgeFrom(node);
Edge eTo=node.getEdgeToward(node);
Node src= efrom.getSourceNode();
Node trg=eTo.getTargetNode();
String ev_src=src.getAttribute("ui.label");
String ev_trg=trg.getAttribute("ui.label");
….. }
}
for(int e=0;e<g1.getEdgeCount();e++){
Edge edge=g1.getEdge(e);
edge_label=edge.getAttribute("ui.label");
Node src_node=edge.getSourceNode();
Node tar_node=edge.getTargetNode();
target=tar_node.getAttribute("ui.label");
source=src_node.getAttribute("ui.label");
if(edge_label.equals("IS_A"))
{ …… }
}
但它提供了錯誤:行Node src= efrom.getSourceNode();
Exception in thread "main" java.lang.NullPointerException
當我ignor此行它給這個錯誤行: if(edge_label.equals("IS_A"))
我無法找到你problem.Thank求助。
的EdgeFrom不爲空,並且具有至少1的值。 – user3060905
請分享整個出來。 – bitli
然後我覺得這個異常來自getSourceNode()方法,請分享一下這個方法的正文嗎? – bitli