Can't load jrxml located in jar file via JRXmlLoader: getting java.io.FileNotFoundException
jasper-reports, java
Solution
`/reports/teacherPay.jrxml` is an absolute file path, meaning, go to the root of the current drive and find the file `teacherPay.jrxml` in the `reports` directory...
Which, if I read your question correctly, isn't what you want
Instead, try loading the report as a resource (given the fact that you state that it's within a `package`
JasperDesign jd = JRXmlLoader.load(getClass().getResource("/reports/teacherPay.jrxml"));
If the report isn't packaged within your application context, then you will need to use a relative path instead, for example.
JasperDesign jd = JRXmlLoader.load("reports/teacherPay.jrxml");
Now, having said that. Unless you are making dynamic changes at runtime, you shouldn't be loading the `jrxml` file, but instead, should have pre-compiled the file and should be loading the `.jasper` file instead. This will be faster and generally less error prone...
Problem
I' m using JasperReports in my Java application. I have a package named "reports" to store all the reports generated. Here is the way I'm calling my jasper report in my application. ``` JasperDesign jd = JRXmlLoader.load("C:\\Users\\Sandaru Weerathunga\\Desktop\\Dasatha Institute\\src\\reports\\teacherPay.jrxml"); ``` This is working. Instead of giving the full path , I tried: ``` JasperDesign jd = JRXmlLoader.load("/reports/teacherPay.jrxml"); ``` But this is showing an Error while running the program: ``` net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /reports/teacherPay.jrxml (The system cannot find the path specified) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:176) at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156) ``` It is not suitable to give the full path to the JRXmlLoader because if you are going to run this application in other computer you have to change all the coding according to the computer path. So help me on this