简体   繁体   English

Java 7 Swing Applet在SortingFocusTraversalPolicy类中失败,并出现StackOverflow错误

[英]Java 7 Swing Applet fails in the SortingFocusTraversalPolicy class with StackOverflow error

Starting from Java 7 they added a new method called getComponentDownCycle in the SortingFocusTraversalPolicy class. 从Java 7开始,他们在SortingFocusTraversalPolicy类中添加了一个名为getComponentDownCycle的新方法。 And now I have time after time a StachOverflow error. 现在我有一次又一次的StachOverflow错误。 Here is the stach trace: 这是stach跟踪:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.qwe.rty.swing.container.bootstrap.AppletBootstrap.bgInit(AppletBootstrap.java:291)
    at com.qwe.rty.swing.container.bootstrap.AppletBootstrap.access$1000(AppletBootstrap.java:46)
    at com.qwe.rty.swing.container.bootstrap.AppletBootstrap$BgInitThread$1.run(AppletBootstrap.java:715)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.qwe.rty.swing.container.bootstrap.AppletBootstrap$BgInitThread.run(AppletBootstrap.java:542)
Caused by: java.lang.reflect.InvocationTargetException
    at java.awt.EventQueue.invokeAndWait(Unknown Source)
    at java.awt.EventQueue.invokeAndWait(Unknown Source)
    at javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
    at com.qwe.rty.swing.container.bootstrap.AppletBootstrap.bgInit(AppletBootstrap.java:212)
    ... 4 more
Caused by: java.lang.StackOverflowError
    at sun.awt.EmbeddedFrame.getParent(Unknown Source)
    at javax.swing.LayoutComparator.compare(Unknown Source)
    at javax.swing.LayoutComparator.compare(Unknown Source)
    at java.util.TimSort.countRunAndMakeAscending(Unknown Source)
    at java.util.TimSort.sort(Unknown Source)
    at java.util.TimSort.sort(Unknown Source)
    at java.util.Arrays.sort(Unknown Source)
    at java.util.Collections.sort(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.DefaultFocusManager.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.DefaultFocusManager.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.DefaultFocusManager.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.DefaultFocusManager.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.DefaultFocusManager.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.DefaultFocusManager.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getFirstComponent(Unknown Source)
    at javax.swing.LegacyGlueFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(Unknown Source)...

It seems that jre goes into an infinite recursion while trying to get focused component. 似乎jre在尝试获取焦点组件时进入了无限递归。 Any clues? 有什么线索吗?

Use SwingUtilities.invokeLater() without javax.swing.SwingUtilities.invokeAndWait(Unknown Source). 使用不带javax.swing.SwingUtilities.invokeAndWait(Unknown Source)的SwingUtilities.invokeLater()。 It will solve this issue. 它将解决此问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM