IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Provázání FXML s Javou

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Filip Hácha
Člen
Avatar
Filip Hácha:10.5.2017 19:43

Zdravím. Narazil jsem na problém při načítání FXML souboru do své aplikace.

FXMLLoader loader = new FXMLLoader(getClass().getResource(MAIN_XML));
        Parent root = null;
        try {
            root = loader.load();
        } catch (Exception e) {
            e.printStackTrace();
        }
        Scene scene = new Scene(root);

Z pro mě nepochopitelného důvodu mi

getClass().getResource(MAIN_XML)

vrací null.

private static final String MAIN_XML = "fxml/main.fxml";

V adresáři s projektem mám složku "fxml" a v ní se nachází soubor "main.fxml".
(Zkoušel jsem ten soubor nacpat i kamkoli jinam - nepomohlo).

Jako IDE používám IntetlliJ IDEA.

 
Odpovědět
10.5.2017 19:43
Avatar
Odpovídá na Filip Hácha
Petr Štechmüller:10.5.2017 20:28

Ahoj, zkus změnít tu cestu na:

private static final String MAIN_XML = "/fxml/main.fxml";
Nahoru Odpovědět
10.5.2017 20:28
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Filip Hácha
Člen
Avatar
 
Nahoru Odpovědět
10.5.2017 21:19
Avatar
Filip Hácha
Člen
Avatar
Filip Hácha:10.5.2017 21:22

Dokonce jsem si stáhl hotovou aplikaci jako .jar která FXML používá a když ji spustím funguje normálně, si ale vytvořím nový projekt a zkopíruji do něj zdrojáky s tím že zachovám stejnou strukturu, opět hází stejnou výjimku.

 
Nahoru Odpovědět
10.5.2017 21:22
Avatar
Filip Hácha
Člen
Avatar
Filip Hácha:10.5.2017 22:38

Další poznatek:

  1. Odebral jsem načítání FXML
  2. Exportoval projekt do JARu
  3. Vrátil jsem načítání FXML souboru zpět a příslušnou třídu přeložil v CMD
  4. Nahradil jsem v JARu starou třídu nově přeloženou třídou
  5. Vytvořil v JARu složku fxml a do ní vložil main.fxml

A JAR funguje. Jelikož v IDE to nejde myslím že problém bude někde v nastavení nějaké cesty.

 
Nahoru Odpovědět
10.5.2017 22:38
Avatar
Odpovídá na Filip Hácha
Petr Štechmüller:11.5.2017 8:24

A ta složkaFXML je ve složce src?
IntelliJ totiž po kompiluje soubory do svojí složky (defaultně je to bin). Do této složky dále nakopíruje veškeré NEjava soubory.
Pro lepší pochopení přikládám obrázek

Editováno 11.5.2017 8:25
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.5.2017 8:24
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.