首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JasperReports 導出 PDF 報 FileNotFoundException:路徑不存在或目錄未創建

     編輯:程式設計綜合問答

異常堆棧

net.sf.jasperreports.engine.JRException: Error trying to export to file : TransformXMLtoHTML\PDFReports\TransportLabel_3879017041.pdf
Caused by: java.io.FileNotFoundException: TransformXMLtoHTML\PDFReports\TransportLabel_3879017041.pdf (系統找不到指定的路徑。)

兩大核心原因

  1. 相對路徑解析錯誤:應用運行時工作目錄非預期,導致 TransformXMLtoHTML\PDFReports\ 找不到。
    解決:使用絕對路徑或 new File(baseDir, relativePath).getAbsolutePath() 構建。
  2. 父目錄不存在:代碼未在導出前創建目錄。
    解決:file.getParentFile().mkdirs() 確保目錄鏈存在。

修復代碼模板

File outDir = new File(System.getProperty("user.dir"), "TransformXMLtoHTML/PDFReports");
if (!outDir.exists()) outDir.mkdirs(); // 關鍵:創建多級目錄

File outFile = new File(outDir, "TransportLabel_" + System.currentTimeMillis() + ".pdf");
JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outFile));
exporter.exportReport();

最佳實踐

  • 配置屬性文件管理輸出根目錄,區分開發/生產環境。
  • 文件名加時間戳/UUID 避免衝突。
  • 導出前檢查磁盤空間、權限。
  • 使用 SimpleOutputStreamExporterOutput 配合 FileOutputStream 可控緩衝區大小。

**90% 的 FileNotFoundException 都是目錄沒創建或路徑解析錯。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved