Originariamente inviato da andbin
Se sono immagini fisse che "fanno parte" della applicazione sarebbe più giusto metterle nel jar.
Comunque la questione principale è che getResource() va a cercare le risorse usando il "classpath". Ma se avvii l'applicazione con
java -jar file.jar, il classpath è composto solo dal file jar (più eventuali altri jar se fossero specificati nel manifest). In pratica ignora -classpath o la variabile CLASSPATH.
Quindi non troverebbe le risorse, nemmeno se fossero nella stessa directory dove c'è il tuo jar.
Sarebbe diverso se tu mettessi in classpath il file jar e la directory corrente:
java -classpath .;pic.jar Pic
in questo modo NON hai avviato il jar, l'hai solo messo in "classpath" e detto di avviare il main della classe Pic. In tal caso funzionerebbe.
Se proprio vuoi aprire un file sul file-system, allora usa normalmente File ecc... Nel tuo caso basta usare il costruttore di ImageIcon che prende un String con il nome del file.
Ma in tal caso occhio, se metti un nome relativo es. pic1.jpg, il nome è riferito alla "current working directory". Quindi devi assicurarti che il jar venga avviato facendo in modo che la directory corrente sia quella dove ci sono le immagini.