2013-08-25 17 views
0

NullPointerException이 발생하여 어디서 또는 왜 발생했는지 파악할 수 없습니다. 저는 JavaFX를 프로젝트에 사용하고 있으며, 많은 구성 요소 (주로 SVGPath, Circle 객체 및 Text 객체)가있는 .fxml 파일을 포함하고 있습니다. 컨트롤러 클래스로 가져옵니다. 각 SVGPath에는 마우스 수신기 (클릭, 입력 및 종료 작업)가 있으며 때로는 해결하기 위해 시간을 보냈기 때문에 미친 짓을하는 NullPointerException이 발생합니다. 다음은 정확한 스택 추적 예외입니다.JavaFX를 사용할 때 NullPointerException이 발생했습니다.

java.lang.NullPointerException 
at com.sun.javafx.sg.prism.NGTextHelper.computeBoundsLogical(Unknown Source) 
at com.sun.javafx.sg.prism.NGTextHelper.computeContentBounds(Unknown Source) 
at javafx.scene.text.Text.impl_computeGeomBounds(Unknown Source) 
at javafx.scene.Node.updateGeomBounds(Unknown Source) 
at javafx.scene.Node.getGeomBounds(Unknown Source) 
at javafx.scene.Node.getLocalBounds(Unknown Source) 
at javafx.scene.Node$MiscProperties$2.computeBounds(Unknown Source) 
at javafx.scene.Node$LazyBoundsProperty.get(Unknown Source) 
at javafx.scene.Node$LazyBoundsProperty.get(Unknown Source) 
at javafx.scene.Node.getBoundsInLocal(Unknown Source) 
at com.sun.javafx.scene.control.skin.TextAreaSkin$ContentView.layoutChildren(Unknown Source) 
at javafx.scene.Parent.layout(Unknown Source) 
at javafx.scene.Parent.layout(Unknown Source) 
at javafx.scene.Parent.layout(Unknown Source) 
at javafx.scene.Scene.layoutDirtyRoots(Unknown Source) 
at javafx.scene.Scene.doLayoutPass(Unknown Source) 
at javafx.scene.Scene.access$3900(Unknown Source) 
at javafx.scene.Scene$ScenePulseListener.pulse(Unknown Source) 
at com.sun.javafx.tk.Toolkit.firePulse(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(Unknown Source) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source) 
at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) 
at java.lang.Thread.run(Thread.java:722) 

누군가가 도움을 줄 수있는 이유를 설명해 주시면 감사하겠습니다.

+0

JavaFX의 버그 인 것처럼 보입니다. 나는 참고 문헌을 찾고 있지만, 볼만한 최고의 장소에 대한 액세스 권한이 없습니다 ... – rolfl

+0

당신은이 사이트를 볼 수있는 첫 번째 사람이 아닙니다 : https://forums.oracle.com/thread/2540126 – rolfl

+1

yeap i 오늘 아침에 그 게시물을 보았습니다. 그리고 나는 거기에 실을 열었습니다. 그러나 아무도 아직 대답하지 않았습니다. 어쩌면 이것은 JavaFX의 버그입니다.하지만이 문제는 나를 위해 짜증나게되고 있습니다. :) 반면에 귀하의 회신에 감사드립니다. – quartaela

답변

1

아마도 당신은 이미이 문제를 해결했을 것입니다.하지만 아마도 제 해결책이 다른 사람들을 도울 것입니다.

Swing 응용 프로그램에서 JavaFX를 사용하는 경우 해당 스레드에서 JavaFX 코드 만 실행하고 EDT에서만 스윙 코드를 실행해야합니다.

내 응용 프로그램에서 비슷한 문제가 있었는데 EDT에서 JavaFX 코드를 실행했기 때문입니다. 그래서이 문제를 해결하기 위해 EDT에서 호출 된 메서드에 Platform.runLater (...)를 사용하도록 코드를 검토했습니다.

Platform.runLater(new Runnable() { 
    @Override 
    public void run() { 
    // JavaFX manipulation code. 
    } 
} 

이것은 쉬운 것처럼 보일 때가 있지만 때로는 기억하기가 까다로울 수 있습니다. 따라서 Swing 구성 요소 및 이벤트에서 호출 할 수있는 공용 메서드 및 인터페이스를 검색하는 JavaFX 코드를 검토하십시오.

관련 문제