有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jasper报告缓存JasperReport文件

我尝试创建一个基于servlet的报表服务

当应用程序运行时,我更改了。jrxml文件仍然是我的应用程序 给我的报告没有改变设计,所以我认为jasper会把它缓存在某个地方

如何关闭或强制清除此缓存

 File compiledTemplate=new File(JASPER_COMPILED_TEMPLATES_PATH+  File.separator+templateName+".jasper");
        
 File template=new File(JASPER_TEMPLATES_PATH+File.separator+templateName+".jrxml");
        JasperReport jasperReport=null;
        

        if(compiledTemplate.exists()){
            compiledTemplate.delete();
        }
        
        JasperCompileManager.compileReportToFile(template.getAbsolutePath(),compiledTemplate.getAbsolutePath());
        jasperReport=(JasperReport) JRLoader.loadObjectFromFile(compiledTemplate.getAbsolutePath());
        
        return jasperReport;

共 (2) 个答案

  1. # 1 楼答案

    如果您在Grails环境中,请全部删除。web app/reports/中的jasper文件在进行更改后刷新您的报告

    然后可以重新编译。将jrxml转换为新的。贾斯珀档案

  2. # 2 楼答案

    使用compiledTemplate作为文件的原因是什么?试着这样做:

    File template=new File(JASPER_TEMPLATES_PATH+File.separator+templateName+".jrxml");
    JasperReport jasperReport= JasperCompileManager.compileReport(template);
    return jasperReport;