2016-04-01 4 views
0

Dies ist meine erste Post auf Stack, ich suchte nach Antworten auf meine Frage, aber ich habe nichts nützliches gefunden. Ich lerne Java, also sei sanft;)Wie zu laden FXML-Datei, die aus * .jar Datei ist

Mein Problem ist, dass ich nicht eine Datei mit allem in "jar" machen will. Ich muss die FXML-Datei laden, die sich außerhalb der * .jar-Datei befindet. Zum Beispiel: Ich mache FXML-Datei, die in meinem JavaFXMLApplication-Ordner ist, ich führe "JavaFXApplication.jar" -Datei und diese Anwendung verwenden FXML, die ich gerade gemacht habe.

Ich hoffe, ich beschreibe es klar :)

EDIT: Ich habe eine andere Lösung gefunden, die für mich besser funktioniert ...

File file = new File("absolutPathToFile\\FXMLDocument.fxml"); 
    InputStream is = new BufferedInputStream(new FileInputStream(file)); 

    Pane root = new Pane(); 

    FXMLLoader loader = new FXMLLoader(); 
    try 
    { 
     root = loader.load(is); 

    } 
    catch (IOException ex) 
    { 
     System.out.println(ex); 
    } 

ich es hoffe, dass jemand helfen

Prost :)

Antwort

0

Sie können FXML-Dateien von überall laden. Eine Möglichkeit besteht darin, den Ladebefehl zu verwenden, der eine URL als Argument verwendet. Sie können diese URL bekommen leicht wie folgt aus:

try { 
     File file = new File("../../FXMLDocument.fxml"); 
     if (file.canRead()) { 
      URL url = file.toURI().toURL(); 
      Pane root = FXMLLoader.load(url); 
     } else { 
      System.err.println("File does not exist."); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

Ich denke, die Frage will die fxml aus dem Glas und nicht als separate Datei (in diesem Fall [getResource()] (http holen: // Stackoverflow. com/a/19603055/1155209) wäre ein anwendbareres Beispiel). – jewelsea

+0

Hmm beim nochmaligen Lesen der Frage, vielleicht habe ich es falsch interpretiert und der Fragesteller möchte tatsächlich eine fxml-Datei laden, die nicht im Jar ist. Stackoverflow lässt mich den Downvote nicht umkehren :( – jewelsea

+0

Ich erhalte Ausnahmen, wenn ich so etwas verwendet habe: Datei Datei = neue Datei ("../../ FXMLDocument.fxml"); String url = file. toURI(). toURL(). toExternalForm(); Bereich root = FXMLLoader.load (getClass(). getResource (url)); Was mache ich falsch? – Regemaster

Verwandte Themen