在Java中更改路径JRXML

时间:2014-01-19 13:16:13

标签: java exception jasper-reports

在我的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);

2 个答案:

答案 0 :(得分:0)

您的getResourceAsStream("/sip/schedule.jrxml");来电不接受该类型的“网址”

检查文档,如果它是一个本地文件,它可能需要“file:/// C:/path/to/whereever/sip/schedule.jrxml”

或者您可以在此处看到解决方案:https://community.oracle.com/thread/620656?start=0&tstart=0

或者更好的是

http://forum.spring.io/forum/spring-projects/container/62863-how-to-use-getresourceasstream-to-get-a-file-stream

答案 1 :(得分:0)

在Windows操作系统中,java接受将os安装作为根目录的驱动器。如果将/ sip目录放在该驱动器上,例如(通常)放入C盘。然后你可以把它作为

this.getClass().getClassLoader().getResourceAsStream("/sip/schedule.jrxml");

将schedule.jrxml放到包或项目的资源文件夹中是一种更好的做法,因为在这种情况下,您可以将它安装在任何您想要的地方。