Java Image foiré lorsque je lance le fichier .jnlp
Question
J'ai une méthode qui est appelée au début de mon programme et elle fonctionne correctement lorsque je lance le fichier jar, mais lorsque je lance le fichier jnlp, il se bloque.
public void newImg(String i)
{
try
{
File file = new File(i);
img = ImageIO.read(file);
}
}
img est une image tamponnée au fait.
La solution
Les chances sont que le chemin que vous donnez au fichier ou que les autorisations ne correspondent pas. Placez le gestionnaire de fichiers dans un bloc try, attrapez l'exception et découvrez ce que c'est.
Cela devrait ressembler à quelque chose comme ça:
try {
File file = new File(i);
img = ImageIO.read(file);
} catch (Exception ex) {
// You probably want to open the java console, or use a logger
// as a JNLP may send stderr someplace weird.
Systemm.err.println("Exception was: ", ex.toString());
}
Le code que vous avez ne fait rien avec l'exception.
Vous pouvez consulter le fil de gestion des exceptions dans le didacticiel Java.
mettre à jour
Voir mes commentaires. J'ai juste essayé quelque chose et confirmé ce que je pensais - code avec un try {}
et aucun catch
ou finalement
ne sera même pas compilé. si c'est vraiment le code avec lequel vous pensez travailler, vous avez probablement chargé un ancien fichier de classe; celui-ci n'a pas compilé.
$ cat Foo.java
public class Foo {
public void tryit() {
try {
File f = new File(null);
}
}
}
$ javac Foo.java
Foo.java:3: 'try' without 'catch' or 'finally'
try {
^
1 error
$
Autres conseils
Peut-être que vous ne chargez pas votre image correctement. N'utilisez pas l'emplacement relatif du fichier. Ce sera différent pour chaque système d'exploitation. Votre image dans le fichier JAR doit être chargée correctement de la manière suivante:
URL url = this.getClass().getResource("image.jpg");
Image img = Toolkit.getDefaultToolkit().getImage(url);
Ceci chargera un fichier appelé image.jpg situé au même emplacement que la classe. Vous pouvez également utiliser des éléments tels que File.pathSeparator s’il se trouve à un autre emplacement.
Utilisez l'une de ces deux méthodes pour le charger en tant que ressource:
http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String) http://java.sun.com/javase/6/docs /api/java/lang/Class.html#getResourceAsStream(java.lang.String)
Assurez-vous que vous avez le bon nom de fichier / chemin.
Assurez-vous que vous avez un accès au système de fichiers.