1

Netbean で SAX パーサーを実行して、1GB の XML データを抽出し、CSV ファイルに書き込みます。1MB 未満のテスト データを使用すると、プログラムは完全に実行されます。コードが実行され、予想どおりの出力が表示され、生成された CSV ファイルは正しいです。次に、1 GB の XML を使用してコードを実行します。コードが実行され、予想される出力が約 30 分間表示されました (XML の 105439 行まで正常に読み取ることができました)。その後、出力の表示が停止しました。Netbean の下部には、プログラムが実行中であると表示されますが、緑色のバーは流れを止めています。これは、さらに30分の無の状態で続きます。次に、このエラーに気付きました:

java.lang.IllegalArgumentException:Contents must be presorted - 追加された値 -2146647068 は、org.netbeans.core.output2.AbstractLines の org.netbeans.core.output2.IntList.add(IntList.java:76) の前の値 2147447602 より小さいです。 lineUpdated(AbstractLines.java:764) org.netbeans.core.output2.OutWriter.write(OutWriter.java:216) org.netbeans.core.output2.OutWriter.doWrite(OutWriter.java:453) org.netbeans org.netbeans.core.output2.OutWriter.print(OutWriter.java:526) の .core.output2.OutWriter.println(OutWriter.java:488) org.netbeans.core.output2.NbIO$IO$IOColorLinesImpl.println(NbIO) .java:494) org.openide.windows.IOColorLines.println(IOColorLines.java:88) org.apache.tools.ant.module.run.StandardLogger.formatColoredMessageWithTime(StandardLogger.java:353) org.apache. tools.ant.module.run.StandardLogger。buildFinished(StandardLogger.java:318)[catch] at org.apache.tools.ant.module.bridge.impl.NbBuildLogger.buildFinished(NbBuildLogger.java:440) at org.apache.tools.ant.Project.fireBuildFinished(Project) .java:2093) org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:290) で org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java) で:541) org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153) でexecution.RunClassThread.run(RunClassThread.java:153)execution.RunClassThread.run(RunClassThread.java:153)

私のコードのどこかで、整数が最大値までループしてオーバーフローしたと誰かが私に言いました。問題は、これを引き起こしている整数を見つけることができないことです。私の TreeSet と何か関係があるのではないかと思いますが、私が間違っていない限り、それほど多くの数を実際に使用することはありません。次のハイパーリンクは、私のコード dblp.java です。巨大なコードで申し訳ありませんが、メソッド populateAuthorArray(...) にジャンプしてください。endElement(...) によって呼び出されます。私の間違いを止めるのを手伝ってください。ありがとう http://www.sendspace.com/file/5z06yr

4

1 に答える 1