Allora, il primo path è assoluto, quindi per fuzionare il file pdf si deve trovare esattamente sotto l'albero delle directory da te specificato.

Il secondo invece mi sta bene la ricerca della home dell'utente, ma poi usi nuovamente dei path che mi sembrano rischiosi (quanto sei sicuro che sulla macchina in cui girerà ci sarà la directory Scrivania, per esempio? Sun macchina windows no di sicuro).

Infine, stai usando "/" per separare i path. Sulle macchine Windows non ti funzionerà.

Quindi per risolvere io farei così:

Sol. 1) Usa path relativi. Ricordati che quando scrivi un path se questo è relativo comincia sempre dalla directory in cui si trova il jar che fa partire l'applicazione. Quindi tu puoi distribuire l'applicazione come un file .zip (ad es.) da scompattare a piacimento e il cui contenuto non va toccato, in modo tale da poter caricare i file con path relativi. Ovunque verrà scompattato i path funzioneranno. Ricordati però di aggiustare il separatore di path! Non usare "/" ma File.separator, che restituisce il carattere giusto a seconda del sistema operativo.

Sol. 2) Guarda come si fa ad usare file inclusi dentro il jar, sempre che tu possa. Nel senso, se per esempio quei pdf non sono generati dal programma ma sono pregenerati e distribuiti con l'applicazione, cerca di includeri nel jar, così sei più sicuro che ci siano, che non vengano toccati e che i percorsi siano sempre corretti..

Se preferisci la soluzione 1 (che in generale va bene, alla fine è quello che fanno tutti i programmi che installi tu: creano la loro directory e ci mettono dentro le loro risorse. Se cancelli roba, non funzionano più), potresti pensare di guardare izpack (http://izpack.org/). é un'applicazione java molto carina che ti permette di creare degli installer completamente multipiattaforma, con annessi e connessi vantaggi (come creare shortcut, anche nel menù programmi sotto windows, per esempio).


Ciao!