在我的Java应用程序中,我有这样的结构,
- SIP
- 构建
- DIST
- nbproject文件
- SRC
- SIP
- Form.java
- schedule.jrxml
- 测试
这是我在Form.java中加载jrxml的代码
try{
//String schedule_all ="E:\\My Data\\Tugas Akhir\\repos\\sip\\src\\sip\\jadwal.jrxml";
InputStream file = this.getClass().getClassLoader().getResourceAsStream("/sip/schedule.jrxml");
JasperReport jr= JasperCompileManager.compileReport(file);
JasperPrint jp = JasperFillManager.fillReport(jr, null,con);
JasperViewer jv = new JasperViewer(jp,false);
jv.setVisible(true);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Error show Document");
tambah_log(e.toString());
}
我想替换此路径(E:\ My Data \ Tugas Akhir \ repos \ sip \ src \ sip \ jadwal.jrxml“;)
到我这样的本地项目路径(“/sip/jadwal.jrxml”)。
但是我收到了这个错误
net.sf.jasperreports.engine.JRException: java.net.MalformedURLException
任何想法?因为我想将我的系统部署到另一台计算机。我不会再次配置它的路径。
固定 我像这样改变我的代码。
InputStream file = this.getClass().getClassLoader().getResourceAsStream("/sip/jadwal.jrxml");
JasperReport jr= JasperCompileManager.compileReport(System.getProperties().getProperty("java.class.path").split(";")[System.getProperties().getProperty("java.class.path").split(";").length - 1]+"\\sip\\jadwal.jrxml");
JasperPrint jp = JasperFillManager.fillReport(jr, null,con);
JasperViewer jv = new JasperViewer(jp,false);
jv.setVisible(true);
答案 0 :(得分:0)
您的getResourceAsStream("/sip/schedule.jrxml");
来电不接受该类型的“网址”
检查文档,如果它是一个本地文件,它可能需要“file:/// C:/path/to/whereever/sip/schedule.jrxml”
或者您可以在此处看到解决方案:https://community.oracle.com/thread/620656?start=0&tstart=0
或者更好的是
答案 1 :(得分:0)
在Windows操作系统中,java接受将os安装作为根目录的驱动器。如果将/ sip目录放在该驱动器上,例如(通常)放入C盘。然后你可以把它作为
this.getClass().getClassLoader().getResourceAsStream("/sip/schedule.jrxml");
。
将schedule.jrxml放到包或项目的资源文件夹中是一种更好的做法,因为在这种情况下,您可以将它安装在任何您想要的地方。