我目前正在研究一个Java项目,并且遇到了堆栈溢出错误的问题.首先,程序读入大约1,500,000个单词的文件并将其添加到数组中.然后它读入一个约600字的小文件并将其添加到数组中.它检查600字文件中有多少单词出现在另一个文件中.大文件中的每个单词都与一个数字相关联.因此,当它在大文件中找到一个单词时,它会获取该单词及其相关整数的副本并将其添加到数组中.我的问题是我收到了堆栈溢出错误:
"AWT-EventQueue-0" java.lang.StackOverflowError
问题是,当小文件大约200字时程序运行正常.程序必须执行的最后一行是:
result.setPage("file:file for gui NEW.html");
(结果是JEditorPane)
出于某种原因,当小文件是600字时我得到一个stackoverflow错误但是当它是200字时运行正常.它运行最后一行并生成此文件,但不会将其打印到编辑器窗格中,就像异常启动时一样.
任何人都可以帮忙告诉我为什么会发生这种情况以及如何解决这个问题?谢谢.
控制台中的错误是:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at sun.awt.SunToolkit.getSystemEventQueueImplPP(Unknown Source) at sun.awt.SunToolkit.getSystemEventQueueImpl(Unknown Source) at java.awt.Toolkit.getEventQueue(Unknown Source) at java.awt.EventQueue.isDispatchThread(Unknown Source) at javax.swing.SwingUtilities.isEventDispatchThread(Unknown Source) at javax.swing.JComponent.revalidate(Unknown Source) at javax.swing.plaf.basic. BasicTextUI$RootView.preferenceChanged(Unknown Source) at javax.swing.text.View.preferenceChanged(Unknown Source) at javax.swing.text.BoxView.preferenceChanged(Unknown Source) at javax.swing.text.View.preferenceChanged(Unknown Source) at javax.swing.text.BoxView.preferenceChanged(Unknown Source) at javax.swing.text.View.preferenceChanged(Unknown Source) at javax.swing.text.BoxView.preferenceChanged(Unknown Source) (... repeating forever ...)
编辑:所以基本上似乎GUI中的两个控件不断调用彼此的preferenceChanged()
方法.
Gui似乎是最可能的原因,因为当我运行没有gui的程序并将文件的内容打印到控制台时,它工作正常.我不知道究竟是什么导致了这个问题.我没有使用偏好改变的例程.只有像setSize(),setVisible()等这样的问题会导致它吗?
你在某个地方有递归功能吗?这通常是堆栈溢出的来源.
其他信息在这里.