2016-05-30 134 views
2

我的應用程序中出現了JavaFX(jdk 1.8.0_91)上的一個非常討厭的錯誤,其中多個進度條顯示並更新(隨機或同時)。有時候,特別是當一個進度條被填充時(它有一個進度條的風格類),但有時也是在沒有任何內容的情況下,軟件會阻塞,並且我有這個跟蹤出現多次(不總是相同的數字,但最後一個爲27次):進度條更新崩潰javaFX

Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException: -1 

at java.util.ArrayList.elementData(ArrayList.java:418) 

at java.util.ArrayList.get(ArrayList.java:431) 

at com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:89) 

at com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.java:306) 

at javafx.scene.Parent.updateCachedBounds(Parent.java:1591) 

at javafx.scene.Parent.recomputeBounds(Parent.java:1535) 

at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1388) 

at javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078) 

at javafx.scene.Node.updateGeomBounds(Node.java:3577) 

at javafx.scene.Node.getGeomBounds(Node.java:3530) 

at javafx.scene.Node.getLocalBounds(Node.java:3478) 

at javafx.scene.Node.updateTxBounds(Node.java:3641) 

at javafx.scene.Node.getTransformedBounds(Node.java:3424) 

at javafx.scene.Node.updateBounds(Node.java:559) 

at javafx.scene.Parent.updateBounds(Parent.java:1719) 

at javafx.scene.Parent.updateBounds(Parent.java:1717) 

at javafx.scene.Parent.updateBounds(Parent.java:1717) 

at javafx.scene.Parent.updateBounds(Parent.java:1717) 

at javafx.scene.Parent.updateBounds(Parent.java:1717) 

at javafx.scene.Parent.updateBounds(Parent.java:1717) 

at javafx.scene.Parent.updateBounds(Parent.java:1717) 

at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2404) 

at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:355) 

at java.security.AccessController.doPrivileged(Native Method) 

at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:354) 

at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:381) 

at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:510) 

at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490) 

at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319) 

at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 

at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) 

at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139) 

at java.lang.Thread.run(Thread.java:745) 

然後將27個跡線後跟一個巨大該消息的量:

在異常線程「JavaFX的應用程序線程」 java.lang.ArrayIndexOutOfBoundsException

由於在異常堆棧跟蹤中沒有我自己的代碼的標誌,我有點失落。有沒有人有一個想法,這可能來自哪裏?

+1

由於沒有代碼,任何人都可以在這裏做的最好的做法是隨機猜測。有什麼方法可以創建一個能夠重現問題的[MCVE]?否則,我最好的隨機猜測是你試圖從後臺線程訪問UI。我的下一個猜測是你正在修改一個可觀察列表,同時在ListChangeListener中處理該列表上的一個改變。但是在這個階段,這都是猜測。 –

+0

我在隨機時間有同樣的問題,很少。 – glmxndr

回答

1

如果修改了JavaFX線程上沒有的UI,則該問題很常見。不幸的是,在這種情況下,你會得到一個數組索引越界異常,並且沒有真正的線索發生問題。

參見(對於 「ObservableListWrapper.java:89」 搜索結果):