Partage
  • Partager sur Facebook
  • Partager sur Twitter

java.lang.NullPointerException:Location is not set

    6 octobre 2019 à 13:41:44

    J'ai un problème lors de la compilation de ma Fenêtre. Je l'ai éditée avec Scene builder, mais je n'arrive pas à l'exécuté avec mon IDE eclipse. J'ai cherchhé des solutions sur le net. J'ai esayé tout ce que j'ai trouvé (changé getClass().getResources() en getClass().getClasLoader().getResources()) et bien d'autres. Je ne sais plus quoi faire.

    Voici l'exception retournée 

    ET là le code correspondant à ma classe principale 

    package application;
    	
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    
    public class Main extends Application {
    	@Override
    	public void start(Stage primaryStage) {
    		try {
    			VBox root = (VBox) FXMLLoader.load(getClass().getResource("/Sample.fxml")) ;
    			Scene scene = new Scene(root);
    			primaryStage.setScene(scene);
    			primaryStage.show();
    		} catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static void main(String[] args) {
    		launch(args);
    	}
    }
    

    S'il vous plaît aidez-moi car ce problème m'empêche d'avancer.

    • Partager sur Facebook
    • Partager sur Twitter
      6 octobre 2019 à 17:55:48

      Bonjour,

      Tu peux essayer une autre méthode pour charger le fichier FXML, comme celle-là :

      https://riptutorial.com/javafx/example/5125/example-fxml

      Essaye aussi "Sample.fxml"  sans le slash, ça peut peut-être résoudre le problème.

      • Partager sur Facebook
      • Partager sur Twitter
        6 octobre 2019 à 18:02:13

        Je pense avoir trouvé la solution ^^' où bien tu as déja du remarquer celle-ci.

        La console t'indique que la localisation de ton fichier est éxigée + il te donne la ligne à laquel la localisation de ton fichier doit être mis. Je suppose que cà doit être comme ça (.getResource("Sample.fxml"));)

        Ps : Donne la réponse pour les autres si tu as réussi à résoudre par toi même ;)

        -
        Edité par Forcela8 6 octobre 2019 à 18:03:22

        • Partager sur Facebook
        • Partager sur Twitter
          6 octobre 2019 à 23:16:43

          @Forcela8 je ne comprends pas bien ta solution.

          Après modification voici la nouvelle erreur que je reçois

          -
          Edité par JuniorUlrichMbah 6 octobre 2019 à 23:34:11

          • Partager sur Facebook
          • Partager sur Twitter
            7 octobre 2019 à 10:32:29

            Peux-tu poster le code de ton fichier FXML s'il te plait ?  Le problème vient peut-être de là.

            -
            Edité par Nemo404 7 octobre 2019 à 10:32:45

            • Partager sur Facebook
            • Partager sur Twitter
              7 octobre 2019 à 21:33:10

              <?xml version="1.0" encoding="UTF-8"?>
              
              <?import com.gluonhq.charm.glisten.layout.Layer?>
              <?import javafx.geometry.Insets?>
              <?import javafx.scene.control.Button?>
              <?import javafx.scene.control.ComboBox?>
              <?import javafx.scene.control.DatePicker?>
              <?import javafx.scene.control.Label?>
              <?import javafx.scene.control.MenuButton?>
              <?import javafx.scene.control.MenuItem?>
              <?import javafx.scene.control.PasswordField?>
              <?import javafx.scene.control.TextField?>
              <?import javafx.scene.effect.Blend?>
              <?import javafx.scene.layout.AnchorPane?>
              <?import javafx.scene.layout.VBox?>
              <?import javafx.scene.text.Font?>
              
              <VBox alignment="CENTER" prefHeight="543.0" prefWidth="766.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController">
                 <children>
                    <VBox prefHeight="534.0" prefWidth="766.0">
                       <children>
                          <AnchorPane prefHeight="529.0" prefWidth="766.0">
                             <children>
                                <Label alignment="TOP_CENTER" contentDisplay="CENTER" layoutX="303.0" layoutY="3.0" text="Création de compte" underline="true">
                                   <font>
                                      <Font name="Century Gothic" size="18.0" />
                                   </font>
                                </Label>
                                <AnchorPane layoutX="56.0" layoutY="54.0" prefHeight="135.0" prefWidth="686.0" style="-fx-border-style: solid; -fx-border-radius: 10;" AnchorPane.leftAnchor="42.0" AnchorPane.rightAnchor="38.0">
                                   <children>
                                      <Label layoutX="55.0" layoutY="33.0" text="Nom d'utilisateur :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <TextField layoutX="182.0" layoutY="31.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="23.0" prefWidth="150.0" style="-fx-background-radius: 8;" AnchorPane.rightAnchor="343.0">
                                         <effect>
                                            <Blend mode="DARKEN" />
                                         </effect>
                                      </TextField>
                                      <Label layoutX="78.0" layoutY="75.0" text="Mot de passe :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <PasswordField layoutX="193.0" layoutY="72.0" style="-fx-background-radius: 8;" />
                                      <Label layoutX="117.0" layoutY="-17.0" style="-fx-background-color: #f4f4f4;" text="Données utilisateurs" AnchorPane.leftAnchor="149.0">
                                         <font>
                                            <Font size="19.0" />
                                         </font>
                                      </Label>
                                   </children>
                                   <opaqueInsets>
                                      <Insets />
                                   </opaqueInsets>
                                </AnchorPane>
                                <AnchorPane layoutX="45.0" layoutY="211.0" prefHeight="215.0" prefWidth="686.0" style="-fx-border-style: solid; -fx-border-radius: 10;">
                                   <children>
                                      <Label layoutX="59.0" layoutY="32.0" text="Nom :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <Layer layoutX="191.0" layoutY="42.0" prefHeight="17.0" prefWidth="33.0" />
                                      <Label layoutX="364.0" layoutY="28.0" text="Prénom :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <Label layoutX="60.0" layoutY="69.0" text="Sexe :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <Label layoutX="19.0" layoutY="148.0" text="Date de naissance :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <Label layoutX="314.0" layoutY="149.0" prefHeight="17.0" prefWidth="1.0" text="A">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <Label layoutX="27.0" layoutY="107.0" text="Catégorie :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <Label layoutX="283.0" layoutY="107.0" text="Matières enseignée(s) :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <TextField layoutX="117.0" layoutY="26.0" style="-fx-background-radius: 8;" />
                                      <TextField layoutX="437.0" layoutY="26.0" style="-fx-background-radius: 8;" />
                                      <TextField layoutX="334.0" layoutY="147.0" prefHeight="25.0" prefWidth="158.0" style="-fx-background-radius: 8;" />
                                      <MenuButton layoutX="118.0" layoutY="67.0" mnemonicParsing="false" style="-fx-background-radius: 5;" text="Masculin">
                                         <items>
                                            <MenuItem mnemonicParsing="false" text="Masculin" />
                                            <MenuItem mnemonicParsing="false" text="Féminin" />
                                         </items>
                                      </MenuButton>
                                      <DatePicker layoutX="149.0" layoutY="146.0" prefHeight="25.0" prefWidth="150.0" />
                                      <Label layoutX="319.0" layoutY="70.0" text="Numéro de CNI :">
                                         <font>
                                            <Font size="14.0" />
                                         </font>
                                      </Label>
                                      <TextField layoutX="437.0" layoutY="67.0" style="-fx-background-radius: 8;" />
                                      <ComboBox layoutX="436.0" layoutY="104.0" prefWidth="150.0" />
                                      <MenuButton layoutX="116.0" layoutY="105.0" mnemonicParsing="false" text="Catégorie">
                                         <items>
                                            <MenuItem mnemonicParsing="false" text="Simple" />
                                            <MenuItem mnemonicParsing="false" text="Surveillant" />
                                            <MenuItem mnemonicParsing="false" text="principal" />
                                         </items>
                                      </MenuButton>
                                      <Button layoutX="595.0" layoutY="105.0" mnemonicParsing="false" prefWidth="25.0" text="+" />
                                      <Label layoutX="67.0" layoutY="-14.0" style="-fx-background-color: #f4f4f4;" text="Informations personnelles" AnchorPane.leftAnchor="145.0">
                                         <font>
                                            <Font size="19.0" />
                                         </font>
                                      </Label>
                                   </children>
                                   <opaqueInsets>
                                      <Insets />
                                   </opaqueInsets>
                                </AnchorPane>
                                <Button fx:id="valide" layoutX="536.0" layoutY="444.0" mnemonicParsing="false" onAction="#Clicked" onMouseClicked="#Clicked" prefHeight="28.0" prefWidth="80.0" text="Valider" />
                                <Button fx:id="annule" cancelButton="true" layoutX="630.0" layoutY="444.0" mnemonicParsing="false" onAction="#Erase" prefHeight="28.0" prefWidth="80.0" text="Annuler" />
                             </children>
                          </AnchorPane>
                       </children>
                    </VBox>
                 </children>
              </VBox>
              
              • Partager sur Facebook
              • Partager sur Twitter
                7 octobre 2019 à 22:38:46

                C'est bon ça marche, j'ai réussi à lancer le FXML. Pour résoudre le problème il faut faire ceci :

                1- Tu enlèves le layer gluon qui apparaît en bleu dans le 3ème Anchorpane en utilisant scene builder (ou tu le remplaces par un autre éléments si t'en a vraiment besoin)

                2- Tu utilises ce code pour charger le fxml

                package application;
                
                
                
                import javafx.application.Application;
                import javafx.fxml.FXMLLoader;
                import javafx.stage.Stage;
                import javafx.scene.Parent;
                import javafx.scene.Scene;
                
                
                
                public class Main extends Application {
                	@Override
                	public void start(Stage primaryStage) {
                		try {
                										
                			FXMLLoader loader = new FXMLLoader();
                			loader.setLocation(Main.class.getResource("Sample.fxml"));
                			Parent page = loader.load();	
                			
                		
                			Scene scene = new Scene(page);
                			primaryStage.setTitle("Test Fenetres");
                			
                			primaryStage.setScene(scene);
                			primaryStage.show();
                		} catch(Exception e) {
                			e.printStackTrace();
                		}
                	}
                	
                	public static void main(String[] args) {
                		launch(args);
                	}
                }
                

                3- Tu utlises ce controlleur si jamais tu as un problème :

                package Application;
                
                import javafx.fxml.FXML;
                import javafx.scene.control.Button;
                
                
                public class SampleController {
                	
                	
                	@FXML
                	private Button valide;
                	
                	@FXML
                	private Button annule;
                
                
                	
                	@FXML
                	private void Erase() {
                		
                	}
                	
                	@FXML
                	private void Clicked() {		
                
                	}	
                	
                }


                Et normalement ça marche :)

                • Partager sur Facebook
                • Partager sur Twitter
                  12 octobre 2019 à 10:17:28

                  @Nemo404 je dois remplacer quoi ? où ? 

                  J'ai chercher j'ai rien vu

                  • Partager sur Facebook
                  • Partager sur Twitter

                  java.lang.NullPointerException:Location is not set

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  • Editeur
                  • Markdown