A system.setProperty-vel elvben felül tudsz írni "környezeti változót" amit a "-D"-vel adtál meg.
Azt tudom elképzelni, hogy azért nem működik, mert a programrész ami használja a file.encoding változó értékét, már kiolvasta mielőtt te átállítottad volna és a régi értéket használja.