Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Random ArrayIndexOutOfBoundsException in JavaFX Application

Tags:

java

javafx

I have a rather large JavaFX Application which works well most of the time. However, sometimes I get random ArrayIndexOutOfBoundsExceptions when clicking through the application. I can't reproduce the errors and don't know when they appear: Sometimes I can click through the application without any problems, and sometimes the app crashes and the stacktrace appears.

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 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.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.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)

When reading the stacktrace, the only thing which caught my attention is that the error doesn't even happen in some of my code. Does anyone of you know problems like this and has an idea, where I could start investigating or what could be causing this problem?

I tried it on JDK 1.8.0_74 (Windows 8.1 x64), JDK 1.8.0_77 (Windows 8.1 x64) and JDK 1.8.0_91 (OS X 10.11)

like image 737
Christian Avatar asked Aug 06 '16 09:08

Christian


1 Answers

As I'm pretty new at JavaFX, I might be wrong but I faced this exact same problem while writing a game. The problem in my case was that I was trying to move the objects from a different thread than the "JavaFX Application Thread". As you haven't provided your code, I cant be sure but I would suggest you to make any changes to the GUI only through the "JavaFX Application Thread" and that should fix it.

like image 122
Arijit Ghosh Avatar answered Oct 26 '22 16:10

Arijit Ghosh