devi costruirti il path alla resource.
In genere robe come guide, come immagini vengono messe in una cartella appunto chiamata resource.
Fai una roba simile

path home
|____class (o bin) contiene file .class
|____resource, contiene tutto ciò che ti serve ma che non è java
|____src contiene tutti i tuoi sorgenti
|____lib contiene librerie esterne (se necessarie)

per cui tu ogni volta vai a beccare path home e te la metti in una variabile.
Questa la puoi specificare in vari modi, il caso più semplice è appunto la cartella di esecuzione

(es. /home/user/progetto

progetto è la tua path home, quindi il primo path che ritrovi è quello che va da / a progetto.

Dopo di che a questo aggiungi, con File.Separator, il resto delle tue risorse:

codice:
File pa = new File (path_home, "resource" + File.Separator + nomefile);
in questo caso hai sempre un path assoluto in pa.

Come ti trovi path home? Benissimo puoi decidere che è la tua cartella di progetto o dist da cui esegui, puoi specificarla come path oppure puoi cercare una cartella di nome progetto nella home (avendo cura di mantenere la struttura). La terza soluzione la usano quasi tutti i programmi unix che non sono installati per tutti gli utenti