Ascolta io ho utilizzato proguard.
Riguardo all'uso di proguard, dai in pasto il tuo jar senza abilitare nessuna opzione ma proprio nessuna e vedi se ti da errore dello stesso tipo, in teoria no. Poi piano piano metti ottimizzazione del codice e offuscamento non inserendo però le opzioni keep.... che a volte causano problemi su variabili ecc ecc.
Cmq tengo a precisare che rendi più difficle la vita a chi vuole copiare il tuo programma ma non lo rendi impossibile infatti io ci ho rinunciato ad utilizzarlo.
Spero di averti chiarito alcuni dubbi