대부분의 경우 잘 작동하는 다소 큰 JavaFX 응용 프로그램이 있습니다. 그러나 응용 프로그램을 클릭 할 때 임의의 ArrayIndexOutOfBoundsExceptions가 표시되는 경우가 있습니다. 나는 오류를 재현 할 수없고 그들이 언제 나타나는지 모른다 : 때로는 문제없이 응용 프로그램을 클릭 할 수 있으며 때때로 응용 프로그램이 충돌하고 stacktrace가 나타납니다. 스택 트레이스를 읽을 때JavaFX 응용 프로그램에서 임의의 ArrayIndexOutOfBoundsException이 발생했습니다.
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)
, 내 관심을 끌었 유일한 것은 오류도 내 코드의 일부에서 발생하지 않습니다. 누구든지 이와 같은 문제를 알고 있으며 조사를 시작할 수있는 곳이나이 문제의 원인이 될 수있는 아이디어가 있습니까?
내가 JDK 1.8.0_74 (윈도우 8.1 64), JDK 1.8.0_77 (윈도우 8.1 64)와 JDK 1.8.0_91에 그것을 시도 (OS X 10.11)
응용 프로그램 스레드가 아닌 다른 스레드에서 ui를 업데이트합니까? 지난 며칠 동안 잘못된 스레드에서 UI를 업데이트하는 것과 관련된 몇 가지 유사한 문제가있었습니다. – fabian
여기에 해당하는 스택 추적이 있습니다. http://stackoverflow.com/questions/19769896/unexpected-arrayindexoutofboundsexception-in-javafx-application-refering-to-no 어쩌면 잘못된 것을 알아내는 데 도움이 될 수 있습니다. –
아마도 예외 브레이크 포인트가 도움이 될 수 있습니다. 스택의 각 프레임을 건너 뛰고 변수 및 필드를 분석하여 문제의 근본 원인을 찾을 수 있습니다. – Caelum