Image Pfad Problem bei der Ausführung von java -jar *.jar

Hallo Zusammen,

das folgende Beispiel soll mein Problem verdeutlichen.

Code:
import java.awt.Dimension;
import java.io.File;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageTest
{

  private JButton button = new JButton();
  // private String seperator = System.getProperty("file.separator");
  private String seperator = File.separator;

  public ImageTest()
  {
    JFrame frame = new JFrame();
    frame.setMinimumSize(new Dimension(100, 100));
    frame.setResizable(true);
    frame.add(getUI());
    frame.setLocationRelativeTo(null);
    frame.setSize(frame.getPreferredSize());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.pack();
  }

  private JPanel getUI()
  {
    JPanel panel = new JPanel();
    
    ImageIcon imgURL = new ImageIcon(getFilePath("open.gif", "images"));
    
    if (imgURL != null)
    {
      button.setIcon(new ImageIcon(getFilePath("open.gif", "images"), "Open"));
      panel.add(button);
    }
    else
    {
      System.err.println("Couldn't find file!");
      return null;
    }
    
    return panel;
  }

  private URL getFilePath(String image, String folder)
  {
    StringBuffer imagePath = new StringBuffer();
    imagePath.append(folder);
    imagePath.append(seperator);
    imagePath.append(image);

    URL imgURL = getClass().getResource(imagePath.toString());

    return imgURL;
  }

  public static void main(String[] args)
  {
    ImageTest test = new ImageTest();
  }

}

Die Anwendung funktioniert unter Eclipse ohne Probleme. Die Exception fällt, sobald ich die *.jar über die Kommandozeile aufrufe !

java -jar ./ImageTest.jar

Code:
Uncaught error fetching image:
java.lang.NullPointerException
        at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
        at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:113)
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)


So sieht die Ordnerstruktur aus:

http://img109.imageshack.us/img109/8159/imagepath1.jpg

Was mache ich falsch ?

Gruß
Angelika

Nachtrag: Das Bild existiert innerhalb der *.jar Datei !
 
Zuletzt bearbeitet:
Falls du noch keine Lösung hast: Ich meine getResource erwartet dass die Pfadangabe ein / als Trenner enthält. File.separator gibt dir unter Windows aber z.B. ein \\. Probier dass doch mal aus.
 
Zurück