Java 如何将jasper报表生成的PDF文件保存在一个项目文件夹中

Java 如何将jasper报表生成的PDF文件保存在一个项目文件夹中,java,jasper-reports,Java,Jasper Reports,我有一个jasper报告,用户已经可以下载了。 但现在需要将此PDF的副本保存到服务器上的特定文件夹中,我有以下代码,但它会生成一个错误 JasperDesign design = JRXmlLoader.load(jrxPath); JasperReport report = JasperCompileManager.compileReport(design); JasperPrint pr

我有一个jasper报告,用户已经可以下载了。 但现在需要将此PDF的副本保存到服务器上的特定文件夹中,我有以下代码,但它会生成一个错误

            JasperDesign design = JRXmlLoader.load(jrxPath);
            JasperReport report = JasperCompileManager.compileReport(design);                
            JasperPrint print = JasperFillManager.fillReport(report, getParametros());           

            //String pojectPath = "http://localhost:9080/ProjectName/";
            String exportPath = projectPath + "reports/saida/" + "reportName.pdf";
            JasperExportManager.exportReportToPdfFile(print, exportPath);
net.sf.jasperreports.engine.JRRuntimeException: java.io.FileNotFoundException: http:\localhost:9080\RelatoriosDPOC\reports\saida\reportName.pdf
(文件名、目录名或卷标的语法不正确。)

我已经试着改变道路了。但我也犯了同样的错误

 String exportPath = projectPath + "reports/saida/";

我的项目文件夹:


尝试创建目录并获取此目录的绝对路径:

  String realPath = getServletContext().getRealPath("/");

  File file = new File(realPath+"/reports/saida/output/");
  file.mkdirs();

  JasperExportManager.exportReportToPdfFile(print, file.getAbsolutePath +"reportName.pdf");

尝试创建目录并获取此目录的绝对路径:

  String realPath = getServletContext().getRealPath("/");

  File file = new File(realPath+"/reports/saida/output/");
  file.mkdirs();

  JasperExportManager.exportReportToPdfFile(print, file.getAbsolutePath +"reportName.pdf");

您尝试执行的操作无效,因为无法访问此文件夹。实现所需的一种方法是将pdf bytearray或stream对象写入响应中。类似这样的东西。谢谢你的awnser,但我已经可以将pdf导出到brownser,现在我需要在服务器上保存一份副本。是否要使此文件夹可访问?请尝试对文件路径i..e exportPath变量进行syso。。可能是路径不可访问。否则似乎没有问题。您尝试执行的操作无效,因为无法访问此文件夹。实现所需的一种方法是将pdf bytearray或stream对象写入响应中。类似这样的东西。谢谢你的awnser,但我已经可以将pdf导出到brownser,现在我需要在服务器上保存一份副本。是否要使此文件夹可访问?请尝试对文件路径i..e exportPath变量进行syso。。可能是路径不可访问。其他方面似乎没有问题。是否有办法将输出文件保存在服务器文件系统中,而不是保存在项目路径中?@MaYurMahAjan是的,如果您的服务器是Windows,则可以使用类似file file=new file(“C:/temp/output”)的内容。如果您的服务器是Linux,则可以使用类似file=new file(“/opt/output”)的内容是否有办法将输出文件保存在服务器文件系统中,而不是保存在项目路径中?@MaYurMahAjan是的,如果您的服务器是Windows,则可以使用类似file file=new file(“C:/temp/output”)的内容。如果您的服务器是Linux,则可以使用类似file=new file(“/opt/output”)的内容