2014-10-12 17 views
-1

嗨朋友我已经创建了一个java项目,并且还使用该项目中的jasper报告生成报告,当我将我的java项目打包到.exe安装程序时,jasper报告工作正常,但是当我在另一个系统中部署该exe安装程序时, jasper报告不起作用ie:jasper报告在我的系统中调用,但不在另一个系统中,我知道我必须更改我的文件路径,但我不知道如何提供在所有系统和Jasper中接受的文件路径报告也将在另一个系统中正常工作。贾斯珀报告不工作在Java需要帮助来解决它?

我的代码是:

 try(InputStream is = getClass().getResourceAsStream("C:\\Users\\Applebj\\Documents\\NetBeansProjects\\JavaApplication14\\src\\resources\\bil.jrxml")){ 
    String txt = jLabel1.getText(); 
    String t1=lb2.getText(); 
    String t2=lbl3.getText(); 
    Connection cn; 
    Class.forName("com.mysql.jdbc.Driver"); 
      cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/billing", "root", ""); 
    Map <String,Object> mp =new HashMap <String,Object>(); 
    mp.put("bj", txt); 
    mp.put("hpy",t1); 
    mp.put("li",t2); 

    // URL urpo=getClass().getResource("/resources/bil.jrxml"); 
    JasperReport jasperReport; 
    jasperReport = JasperCompileManager.compileReport(is); 
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,mp, cn); 
    // JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\Users\\Applebj\\Desktop\\rep\\simple_report.pdf"); 

    JasperExportManager.exportReportToPdfFile(jasperPrint, "bil.pdf"); 
    JasperViewer.viewReport(jasperPrint); 


} 
catch(Exception eey){ 
    eey.printStackTrace(); 
    System.out.println(eey.getMessage()); 
} 

好心帮我解决adavance这个问题感谢

+0

我猜测路径为'C:\\ Users \\ Applebj \\ Desktop \\ report \\ bil。 jrxml'在其他系统上找不到。您需要以某种方式将'.jrxml'与应用程序捆绑在一起... – MadProgrammer 2014-10-12 05:39:30

回答

1

取决于你如何建立你的应用程序,你需要确保.jrxml文件包括内产生.jar文件。

在Netbeans和Eclipse中,您应该能够将.jrxml文件放入src目录,并且它应该作为构建过程的一部分捆绑在一起。

这意味着你将不再能指.jrxml为一个文件,而是,你需要把它作为一个嵌入式资源...

try (InputStream is = getClass().getResourceAsStream("/path/to/report/relative/to/the/src/directory/bil.jrxml")) { 
    JasperReport jasperReport = JasperCompileManager.compileReport(is); 
} 

(NB仍可能该JasperCompileManager将抛出你需要处理异常,但至少InputStream将正常关闭)

这句话的意思是,如果你把bil.jrxml报告中src/resources目录(例如),你就需要使用路径/resources/bil.jrxml

现在,我不打算在运行时编译一个.jrxml文件,因为它不是一个简短的过程,报告过程可能已经花费几秒钟(如果不再更长),所以您不希望让用户等待,而是,预先编译它们,并使用生成的.jasper文件代替,这可以在运行时加载...

+0

am得到以下错误,正如我所说的按照您的提交 找不到适用于compileReport(URL)的方法 方法JasperCompileManager.compileReport(String )不适用 (参数不匹配; URL不能转换为字符串) 方法JasperCompileManager.compileReport(InputStream)不适用 (参数不匹配; URL无法转换为InputStream) 方法JasperCompileManager.compileReport(JasperDesign)不适用 (参数不匹配; URL不能转换为JasperDesign) – user2563380 2014-10-12 06:51:31

+0

是的,这就是你没有先咨询API文档。更新 – MadProgrammer 2014-10-12 07:51:01

+0

笏我必须更新?..告诉我清楚plzz – user2563380 2014-10-12 08:23:54