Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les exécutable .exe et .jar ne se lance plus

Problème d'images

    15 septembre 2020 à 12:50:39

    Bonjour,

    J'ai vraiment besoin de votre aide pour résoudre ce problème s'il existe une solution. J'ai énormément cherché comme faire mais rien.

    Je programme une application avec javaFx (fxml comme vues) sur Apache NetBean, avec Maven.

    Lorsque j'utilise un chemin tel que celui-ci : /C:/User/Jojo/Drive/Documents/NetBeansProjects/Projet/src/main/resources/images/cabinet.PNG, le programme fonctionne correctement depuis l'IDE et lorsque je lance les exécutables, tout fonctionne.

    Mais lorsque je veux l'utiliser dans un autre ordinateur, les images ne s'affiche pas; et lorsque je change le chemin de l'image à utiliser en ceci :  src/main/resources/images/cabinet.PNG, dans ce cas, les exécutables ne se lancent même pas.

    Pourriez-vous s'il vous plaît m'aider à trouver une solution pour pouvoir lancer l'application depuis n'importe quel machine avec l'affichage des image ?

    Si la solution a déjà été trouvée, veuillez s'il vous me l'indiquez ?

    -
    Edité par JoëlLemfileNtumba 15 septembre 2020 à 12:52:11

    • Partager sur Facebook
    • Partager sur Twitter
    LNJDJW.ORG
      16 septembre 2020 à 10:20:07

      Merci pour ta réponse, j'ai essayé de le faire comme suite 

      J'ai même mis le chemin absolu pour voir.

      Lorsque je lance le projet depuis l'IDE, ça fonctionne, mais lorsque je génère les exécutables et que je les lance, rien ne se passe, rien n'apparaît :(

      -
      Edité par JoëlLemfileNtumba 16 septembre 2020 à 10:20:58

      • Partager sur Facebook
      • Partager sur Twitter
      LNJDJW.ORG
        16 septembre 2020 à 12:02:26

        vérifie que:

        1) l'image est bien dans le jar

        2) que f n'est pas null (null = image pas trouvée)

        Si null, retire src/main/resources (garde un / devant)

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2020 à 13:24:13

          L'image est bien dans le jar.

          Et aucune variable n'est null, puisque, lancé depuis l'IDE, ça fonctionne, mais ce sont les exécutables qui ne donnent rien du tout. Lorsqu'il y a un '/' devant, il est null :(.

          • Partager sur Facebook
          • Partager sur Twitter
          LNJDJW.ORG
            17 septembre 2020 à 6:59:00

            Ton projet est buildé avec Maven ?

            Dans le jar/exe généré le chemin src/main/resources/ n'existe plus, le contenu de ce chemin se retrouve à la racine de ton classpath.

            Il faut donc continuer à charger les images par le classloader en cherchant dans le classpath, mais avec comme chemin ./

            Tu peux tester directement dans ton IDE, car lors de la compilation il va émuler ce comportement. Et pour vérifier ce qu'il se passe (si tu utilises Maven) tu peux aller voir ce qui est créé dans target/classes, si tu n'utilises pas Maven, ton IDE doit avoir un répertoire build quelque part. Ainsi tu verras exactement où se trouvent tes images, et donc adapter ton chemin

            • Partager sur Facebook
            • Partager sur Twitter
              17 septembre 2020 à 15:36:17

              Merci pour ta réponse.

              Oui c'est Maven.

              J'ai appliqué ton conseil en faisant ceci : 

              Sur l'IDE NetBean ça fonctionne sans problème, mais c'est surtout les exécutables jar et exe qui ne se lance même pas :(

              C'est peut-être moi qui aie mal chargé l'image quelque chose ?

              Il y a bien aussi les images dans target/classes

              -
              Edité par JoëlLemfileNtumba 17 septembre 2020 à 15:40:12

              • Partager sur Facebook
              • Partager sur Twitter
              LNJDJW.ORG
                17 septembre 2020 à 18:44:19

                Dans le target classes, les images sont bien dans le sous-répertoire images j'imagine ?

                As-tu vérifié dans le jar généré que les images sont bien présentes dans ./images ?

                Sinon afin de voir ou sont cherchées les images, tu peux afficher le résultat de this.getClass().getClassLoader().getResource("./images/cabinet.png") qui retourne une URL

                • Partager sur Facebook
                • Partager sur Twitter
                  Il y a environ 11 heures

                  Oui, les images sont bien dans le sous-répertoire 'images'.

                  Dans le jar, les image y sont bien, voici une image :

                  Et lorsque j'affiche le chemin comme tu me l'as montré, ça donne : 

                  file:/C:/User/jojo/OneDrive/Documents/NetBeansProjects/ACE/target/classes/images/cabinet.png

                  Mais lorsque je fais avec this.getClass().getClassLoader().getResourceAsStream("./images/cabinet.png"), ça me donne ça : java.io.BufferedInputStream@5c32e3b7.  C'est normal ??

                  • Partager sur Facebook
                  • Partager sur Twitter
                  LNJDJW.ORG
                    Il y a environ 5 heures

                    Oui, car ClassLoader.getResourceAsStream(String) retourne un InputStream.

                    Par contre en mode jar, il faut afficher le résultat this.getClass().getClassLoader().getResource("./images/cabinet.png")  qui retourne une URL, comme celle que tu as obtenue lors de l'exécution dans ton IDE. Cela te permettra de voir si il cherche bien dans le jar, et où   

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Les exécutable .exe et .jar ne se lance plus

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