2016-05-03 1 views
-1

Bon, j'ai essayé de nombreuses réponses à partir de différentes ressources, mais mon code ne fonctionne toujours pas. (et je ne comprends pas vraiment comment ça fonctionne)Buffered Image dans le fichier jar en utilisant java

Ca va comme ça, le dossier contenant mes fichiers java sont sous Desktop/code et j'ai un package nommé package.name qui contient un dossier de toutes les images Je suis en train de charger ...

que je dois faire un fichier jar, mais mon programme dit toujours le fichier ne peut être lu, des conseils utiles serait apprécié

Ainsi, « image » est le dossier qui a toutes les images j'ai besoin

Ceci est mon code pour la peinture des images:

g2.drawImage(getPicture("/package.name/image/"+1+".png"), x, y, 200, 200, null); 

et j'ai une méthode pour tamponner les images:

public BufferedImage getPicture(String filename) { 
     try { 
      File fp = new File(filename); 
      BufferedImage pic = ImageIO.read(getClass().getResourceAsStream(filename));   
      return pic; 
     } 
     catch (Exception e) { 
      JOptionPane.showMessageDialog(null, "Unable to read file!", "File Error", JOptionPane.ERROR_MESSAGE); 
      return null; 
     } 
    } 

chaque fois que je tente de l'exécuter dans le terminal, mon code produit juste la boîte de dialogue de message, je l'ai essaye de compiler à fichier Jar et il ne fonctionne pas aussi bien.

+0

* Quelle * est la classe d'exception et un message? –

+0

@BrianAgnew l'exception est cette java.lang.IllegalArgumentException: input == null! –

Répondre

0

Vous obtenez NullPointerException right ?? (Ma boule de cristal dit que vous faites)

vous devez charger votre image sans points . et les barres obliques ne / comme ça:

g2.drawImage(getPicture("/your/package/name/image/"+1+".png"), x, y, 200, 200, null);

Edit: Vous obtenez IllegalArgumentException pas NPE - cette réponse est toujours valide comme la cause est la même - null retourné de getResourcesAsStream().

Si votre répertoire image est à la racine du contexte, il est dans le paquet default, et vous devriez ommettre le /your/package/name et utiliser uniquement image/1.png par exemple

+0

le point fait partie du nom du dossier, dois-je supprimer le /package.name? –

+0

désolé, que voulez-vous dire par la racine du contexte? –

+0

si vous avez un paquet comme 'my.app.main', vos répertoires ressembleront à' my/app/main'. Le contexte racine est le répertoire de niveau supérieur de votre application donc ce sera un répertoire qui contient le répertoire 'my';) – Antoniossss