codice:
File pa = new File ("resource" + File.Separator + nomefile);
occhio che come dici tu cerca nella directory corrente del .class che fa la richiesta la cartella resource e il file, non parte dalla directory base (per quello serve il path assoluto alla prima home del progetto)

il problema dei path è che se tu sei dentro il package

com.package.non.so.quanto.profondo.farlo

questo si troverà dentro classes o bin e se la tua classe è dentro questo package, resource andrà cercata sotto la cartella farlo, non da base dir, capito?

Partendo da base dir (cioè l'absolute path a base dir) e concatenando il path relativo hai sempre un path assoluto quindi nessun problema.