I imagine the other two filenames are getting across just fine. You could add a few debugging statements to your Java to make sure (System.err.println(report_filename)).
The problem is more likely to be at the Java end. Things to check:
- Your xmlData input path refers to a file that actually exists.
- Your xmlData input path refers to a file that is readable.
- That these classes actually work as you'd expect in Java, independently of Perl:
- java.datasource.dom4j.Dom4jDataSource
- java.xmlreport.ProcessPdf
- java.xmlreport.ProcessReport
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'