IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Url de ressource d'image dans un FXML à l'intérieur d'un jar


Sujet :

JavaFX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Url de ressource d'image dans un FXML à l'intérieur d'un jar
    J'ai besoin de vorte aide: je n'y arrive simplement pas...

    J'ai un fichier FXML qui doit charger une image provenant de mon répertoire de ressources, mais visiblement ça ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Image url="@path/birthday.jpg" />
    Si je le fais à partir du SceneBuilder, il affiche l'image dans le SceneBuilder, mais lorsque je compile mon application en .jar et tente de réouvrir le composant, ça ne fonctionne pas.
    J'ai essayé des chemins relatifs et des chemins absolus, mais sans succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @../../../../../../defaulticons/birthday.jpg 
    @/../../../../../../defaulticons/birthday.jpg
    (variantes avec plus ou moins de .., au cas où)
    @defaulticons/birthday.jpg
    @/defaulticons/birthday.jpg
    /defaulticons/birthday.jpg
    Ça ne veut simplement pas fonctionner.

    Se pourrait-il que le chemin d'accès soit trop long?
    Voici les chemins à partir de la racine du .jar
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /ca/maboitesite/appli/monapp/jfx/gui/BirthDayPanel.fxml
    /defaulticons/birthday.jpg
    L'erreur que j'ai est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Invalid URL or resource not found 
    at javafx.scene.image.Image.validateUrl(Image.java:1110)
    Si je retire le répertoire defaulticons du path l'erreur devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Invalid resource: /birthday.jpg not found on the classpath 
    file:/C:/Users/monid/.m2/repository/ca/maboitesite/appli/monapp/jfx/gui/appli-monapp-jfx-gui/1.0/appli-monapp-jfx-gui-1.0.jar!/ca/maboitesite/appli/monapp/jfx/gui/BirthDayPanel.fxml:15

    Merci de m'aider à démystifier ce problème, car je suis vraiment dans la brume en ce moment et c'est assez bloquant...

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ben, euh moi j'ai aucun soucis...

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import javafx.scene.image.Image?>
    <?import javafx.scene.image.ImageView?>
    <?import javafx.scene.layout.AnchorPane?>
     
     
    <AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.111">
       <children>
          <ImageView pickOnBounds="true" preserveRatio="true">
             <image>
                <Image url="@../../../../../../defaulticons/birthday.jpg" />
             </image>
          </ImageView>
       </children>
    </AnchorPane>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package ca.maboitesite.appli.monapp;
     
    import java.net.URL;
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
     
    public class Main extends Application {
        @Override
        public void start(Stage primaryStage) throws Exception {
            final URL url = getClass().getResource("jfx/gui/BirthDayPanel.fxml");
            final FXMLLoader loader = new FXMLLoader(url);
            final Parent root = loader.load();
            final Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.show();
        }
     
        public static void main(String... args) {
            Application.launch(args);
        }
     
    }
    Nom : Untitled.jpg
Affichages : 1853
Taille : 9,0 Ko
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    O.o

    J'ai trouvé l'incohérence dans mon code: dans le initialize du contrôleur, je chargeais une ressource avec le mauvais chemin. Comme je cherchais du côté du FXML, pas étonnant que je tournais en rond! Si la trace de l'erreur avait été un brin plus explicite, ça m'aurait sauvé bien des maux de tête!!!

    Merci bouye pour avoir pris le temps de regarder. Ça m'a permis d'écrire un long post que j'ai pu jeter, car je suis tombé sur l'erreur en rapportant mon code sur le forum. Comme quoi c'est toujours bien de partager ses problèmes, ça permet d'avoir un autre angle de vue sur celui-ci! ^_^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer des images dans du FXML
    Par Anohjp dans le forum JavaFX
    Réponses: 3
    Dernier message: 04/07/2013, 02h31
  2. url pour acceder à une image dans un mail
    Par epeichette dans le forum Salesforce.com
    Réponses: 2
    Dernier message: 17/01/2012, 16h09
  3. [MySQL] enregistrement url images dans bd
    Par body72 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/04/2008, 21h34
  4. Image dans ressource non trouvée depuis une dll
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 17/08/2007, 15h10
  5. Réponses: 3
    Dernier message: 27/04/2006, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo