gpt4 book ai didi

PreferenceChanged 方法中的 Java/Swing 堆栈溢出

转载 作者:行者123 更新时间:2023-12-02 11:11:49 25 4
gpt4 key购买 nike

我目前正在开发一个 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 个字时,运行正常。它运行最后一行并生成此文件,但不会将其打印到编辑器 Pane ,因为这是异常发生时的情况。

任何人都可以帮助告诉我为什么会发生这种情况以及我该如何解决它?谢谢。

<小时/>

控制台中的完整错误是:

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() 等这样的东西才会导致它吗?

最佳答案

你在某处有递归函数吗?这通常是堆栈溢出的根源。

Additional info here .

关于PreferenceChanged 方法中的 Java/Swing 堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/590352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com