これは1週間ほど前に修正しようとしていましたが、通常ここでこのタイプの質問をするのは好きではありません。しかし、私はこの時点で本当に選択肢がありません。Javaで 'Null Pointer Exception'の原因を特定できません
私はJavaにはとても新しいので、これが最初の理由だと確信しています。
私がここでやろうとしているのは、「WBS」(作業中断構造)ノードと「アクティビティ」ノードを持つXMLファイルを読み込んで、このデータ構造に入れて後で使用できるようにすることです。私はWBS
というクラスを持っています。これは基本的に、子の配列リストWBS
とオブジェクトActivity
(別の小さなクラス)のArrayListから構成されています。ここで問題があります:XMLファイルからすべての "WBS"ノードを取得できますが、 "Activity"ノードを取得できます。両方を順に取得しようとすると、前述の "Null Pointer Exception" 。私はすべてのコードを投稿しています。これはさまざまなファイルに含まれています。 。あなたはそれが役立つだろうと思う場合は、私はProblem
行のいずれかが出て編集している場合は、すべての作品(マイナス取り出しラインの機能)
でそれを編集することができます
ここで問題のコードは次のとおりです。
private WBS getWBSStructure(Element initElement){
WBS structure = new WBS();
structure.setName(initElement.getElementsByTagName("Name").
item(0).getChildNodes().item(0).getNodeValue());
//WBSElement = initElement;
structure.Children = new ArrayList<WBS>();
NodeList initAllChildren = initElement.getChildNodes();
for(int n=0;n<initAllChildren.getLength();n++){
Node Child = initAllChildren.item(n);
String childName = Child.getNodeName();
if(childName=="WBS") {
structure.Children.add(getWBSStructure((Element)Child));//<--Problem 1
continue;
}
if(childName=="Activity") {
structure.Activities.add(getActivity((Element)Child));//<--Problem 2
continue;
}
}
return structure;
}
private Activity getActivity(Element initElement){
Activity act = new Activity();
act.setName(initElement.getElementsByTagName("Name").
item(0).getChildNodes().item(0).getNodeValue());
act.OriginalDuration = Integer.parseInt(initElement.
getElementsByTagName("PlannedDuration").item(0).
getChildNodes().item(0).getNodeValue());
return act;
}
コメントスタックトレース。これは適切ですか?
analyzer_main.PriXMLReader.getWBSStructureでanalyzer_main.PriXMLReader.getWBSStructureでanalyzer_main.PriXMLReader.getWBSStructureでjava.lang.NullPointerExceptionが (PriXMLReader.java:84) (PriXMLReader.java:83) (PriXMLReader.java:60 ) at analyzer_main.main_window $ 1.shellActivated(main_window.java:77) at org.eclipse.swt.widgets.TypedListener.handleEvent(不明なソース) at org.eclipse.swt.widgets.EventTable.sendEvent(不明なソース) at org.eclipse.swt.widgets.Widget.sendEvent(不明なソース) (org.eclipse.swt.widgets.Widget.sendEvent)(不明なソース) at org.eclipse.swt.widgets .Widget.sendEvent(不明なソース) at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(不明なソース) at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(不明なソース) at org.eclipse.swt。ウィジェット.Control.windowProc(Unknown Source) at org.eclipse.swt.widgets.Canvas.windowProc(Unknown Source) at org.eclipse.swt.widgets.Decorations.windowProc(Unknown Source) at org.eclipse.swt .widgets.Shell.windowProc(Unknown Source) at org.eclipse.swt.widgets.Display.windowProc(Unknown Source) at org.eclipse.swt.internal.win32.OS.BringWindowToTop(ネイティブメソッド) at org。 eclipse.swt.widgets.Decorations.bringToTop(不明なソース) at org.eclipse.swt.widgets.Shell.open(不明なソース) analyzer_main.main_window.main(main_window.java:45)でanalyzer_main.main_window.open(main_window.java:60)
デバッガでコードをステップ実行しようとしましたか? –
はい。多分、Javaの知識が不足しているためにうまくいかなかったかもしれませんが、私はそれを試し続けます。 – Hassan
@Matt Ball:実際にどうやってそれを行うのか分かりません。それは悪いですか? – Hassan