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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top