Problème affichage image fichier .jar éxécutable [Résolu]

Signaler
-
Messages postés
43
Date d'inscription
samedi 21 juillet 2018
Statut
Membre
Dernière intervention
7 janvier 2020
-
Bonjour, j'ai fini de créer un petit projet réalisé en une soirée qui est un pierre feuille ciseaux graphique en utilisant javafx, cependant quand j'exporte le projet dans mon bureau et que je le lance, l'image qui correspond au fond écran du jeux ne s'affiche pas, j'ai regardé plusieurs forum sur le même type de problème mais je ne comprends pas trés bien, pouvez vous m'aider svp merci, voici une partie de mon code dans laquelle je vous montre comment je créer l'image :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Image g1 = new Image("file:fond.jpg");
ImageView iVp = new ImageView(g1);
iVp.setLayoutX(0);
iVp.setFitWidth(850);
iVp.setFitHeight(650);

root.getChildren().addAll(iVp, quit, niv1, niv2, niv3, pierre, feuille, ciseaux, retour, p, g, perdu,
pierre1, feuille1, ciseaux1, pierre2, feuille2, ciseaux2, c, c1, c2);

primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setResizable(false);
primaryStage.setTitle("Pierre_Feuille_Ciseaux by ikky33");






Configuration: Windows / Chrome 76.0.3809.132

1 réponse

Messages postés
15934
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 629
Bonjour,

Selon la JavaDoc de javafx.scene.image.Image, on a plusieurs manières d'utiliser le paramètre
String url
:

import javafx.scene.image.Image;

// load an image in background, displaying a placeholder while it's loading
// (assuming there's an ImageView node somewhere displaying this image)
// The image is located in default package of the classpath
Image image1 = new Image("/flower.png", true);

// load an image and resize it to 100x150 without preserving its original
// aspect ratio
// The image is located in my.res package of the classpath
Image image2 = new Image("my/res/flower.png", 100, 150, false, false);

// load an image and resize it to width of 100 while preserving its
// original aspect ratio, using faster filtering method
// The image is downloaded from the supplied URL through http protocol
Image image3 = new Image("http://sample.com/res/flower.png", 100, 0, false, false);

// load an image and resize it only in one dimension, to the height of 100 and
// the original width, without preserving original aspect ratio
// The image is located in the current working directory
Image image4 = new Image("file:flower.png", 0, 100, false, false);

Dans ton code, avec
new Image("file:fond.jpg");
tu utilises la 4è méthode, celle du répertoire courant, il faudrait plutôt utiliser la 1è ou 2è méthode (en s'assurant que l'image soit bien dans le jar).
Messages postés
15934
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 629 > Ikky33
Quelle erreur ?

De plus, ici tu n'es ni dans le 1er cas (tu devrais commencer par /) ni dans le 2è cas (avec des / intermédiaires)
J'ai mis un / mais un message d'erreur s'affiche :

Image image1 = new Image("/fond.jpg", true);
ImageView iVp = new ImageView(image1);
iVp.setLayoutX(0);
iVp.setFitWidth(850);
iVp.setFitHeight(650);


code d'erreur :

java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
 at javafx.scene.image.Image.validateUrl(Image.java:1118)
 at javafx.scene.image.Image.<init>(Image.java:636)
 at application.Main.start(Main.java:31)
 at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$166(LauncherImpl.java:863)
 at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$179(PlatformImpl.java:326)
 at com.sun.javafx.application.PlatformImpl.lambda$null$177(PlatformImpl.java:295)
 at java.security.AccessController.doPrivileged(Native Method)
 at com.sun.javafx.application.PlatformImpl.lambda$runLater$178(PlatformImpl.java:294)
 at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
 at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
 at com.sun.glass.ui.win.WinApplication.lambda$null$152(WinApplication.java:177)
 at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
 at javafx.scene.image.Image.validateUrl(Image.java:1110)
 ... 11 more
Messages postés
43
Date d'inscription
samedi 21 juillet 2018
Statut
Membre
Dernière intervention
7 janvier 2020

Messages postés
15934
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 juillet 2020
2 629 >
Messages postés
43
Date d'inscription
samedi 21 juillet 2018
Statut
Membre
Dernière intervention
7 janvier 2020

Est-ce que ton image est dans le Jar ?

Vu ton code, tu peux la mettre à côté de Main.class dans src/application puis faire
new Image("application/fond.jpg", true);
Messages postés
43
Date d'inscription
samedi 21 juillet 2018
Statut
Membre
Dernière intervention
7 janvier 2020

ok merci c bon