2013-01-03 2 views
2

JavaFX 2를 사용하는 Eclipse 프로젝트가 있습니다. FXML 파일은 Scene Builder를 사용하여 생성됩니다. 내 목표는 실행 가능한 항아리를 만드는 것입니다. 어떤 방법으로 시도했는지에 상관없이 jar 파일을 실행할 때 항상 JavAFX 실행기 오류 "응용 프로그램 실행 중 예외"가 발생합니다. 스택 추적은 아래와 같습니다.Eclipse에서 JavaFX 2 jar를 배포 할 수 없습니다.

JavaFX Ant 작업 또는 javafxpackager 유틸리티를 사용하는 경우와 동일한 결과가 나타납니다. 당신이 받는다는을 사용할 수있는 경우

Exception in Application start method 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.javafx.main.Main.launchApp(Main.java:642) 
    at com.javafx.main.Main.main(Main.java:805) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at  com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
    at controllers.Main.start(Unknown Source) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:206) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) 
    ... 1 more 

답변

4

문제는 코드의 상대 경로입니다. 이미지 또는 FXML 파일을 참조 할 때는 상대 경로를 사용합니다. 이클립스에서 직접 실행하면 잘 작동하지만 실행 가능한 병처럼 작동하지는 않습니다. 경로를 절대 경로로 변경하면 문제가 해결됩니다.

편집 :이 오류가 발생하여 장면 빌더를 사용하여 FXML 파일을 만드는 경우 텍스트 편집기를 사용하여 장면 생성기에서 생성 된 FXML 파일을 편집하여 상대 경로를 절대로 변환해야한다는 점에 유의하십시오.

+0

와우, 그 오류 메시지는 문제의 근본 원인을 파악하는 데 정말로 도움이되지 못했습니다. 자기 답을 정확하게 표시 할 수 있습니다. – jewelsea

+0

병을 만드는 경우 절대 경로를 어떻게 사용 하시겠습니까? 상대 경로가 어떻게되었고 절대 경로가 어떻게 존재하는지 예를 게시 할 수 있습니까? – Math

1

, 다음 실행 항아리를 만들 this tutorial에 따라, EXE 등 ..

자바 FX에 대한

메이븐 플러그인이 플러그인을 사용하여 그것의 일어나 에 훨씬 더 쉽게, 더 및 신속하게 실행하고 복잡한 배포본 (실행 가능한 JAR 파일, 기본 설치 프로그램 및 웹 시작 번들 등)을 번들로 만들 수 있습니다.

+0

제안에 감사하지만 이클립스 프로젝트를 Maven으로 변환하는 것은 많은 시간이 소요됩니다. 문제를 발견하고 답변에 게시했습니다. – alexb

관련 문제