2016-05-30 49 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” 搜索结果):