2016-07-03 1 views
2

J'essaie de charger une image à partir d'un dossier nommé Custom dans lequel l'utilisateur place des images. Voici la méthode que je chargeais images:Java Image Chargement à partir du fichier .jar

public BufferedImage getCustImg(String path){ 
    BufferedImage img = null; 
    String s = get.getProgramPath(); 
    path = path.trim(); 
    String s2 = s + "\\Custom\\" + path + ".png"; 

    try{ 
     img = ImageIO.read(this.getClass().getResource(s2));//gets image from file path 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return img; 
} 

Voici la méthode du chemin du programme

public String getProgramPath(){ 
    File f = new File("./Resources/Sprtes/blank.png"); 
    String s = f.getAbsolutePath(); 
    String[] stringArr = s.split("Resources"); 
    String s2 = stringArr[0]; 
    s2 = s2.substring(0, s2.length() - 3); 
    return s2; 
} 

Quand je lance le tout code fonctionne bien, mais le problème semble lorsque je tente d'exécuter le programme un fichier .jar. Lorsque je l'exécute à l'aide d'un fichier .jar, l'image ne se charge pas. C'est là que le dossier personnalisé est en relation avec le fichier .jar:

File Structure

Comment dois-je changer la méthode pour vous assurer que cela fonctionne?

+1

S'il vous plaît lire doc java pour 'Class.getResource()'. –

+1

Je pense que cet article pourrait répondre à votre question. http://stackoverflow.com/questions/38167205/loading-images-in-the-exported-jar-file – Olithegoalie

Répondre

1

Je compris le problème grâce à Luke Lee et Olithegoalie,

img = ImageIO.read(this.getClass().getResource(s2)); ne fonctionne pas si le chemin sort du pot, donc je devais changer pour

public BufferedImage getCustImg(String path){ 
    BufferedImage img = null; 
    String s = get.getProgramPath(); 
    path = path.trim(); 
    String s2 = s + "\\Custom\\" + path + ".png"; 
    try{ 
     img = ImageIO.read(new File(s2)); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return img; 
}