IDEA导出pdf错误:net.sf.jasperreports.engine.JRException: Error trying to export to file

问题报错如下:

net.sf.jasperreports.engine.JRException: Error trying to export to file : D:\ireport\dn_201409261257140622378.pdf
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:349)
    at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:126)
    at com.css.cnpos.autoinvc.util.PdfGenter.printDN(PdfGenter.java:95)
    at com.css.cnpos.autoinvc.test.PdfGenterTest.printDN(PdfGenterTest.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.io.FileNotFoundException: D:\ireport\dn_201409261257140622378.pdf (另一个程序正在使用此文件,进程无法访问。)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:343)
    ... 25 more
 

问题原因:

执行程序到处pdf的时候,遇到了一个错误:导出错误。刚开始还以为缺少什么jar包,后来看了下原因,其实是因为我先前打开了这个pdf文件,然后没有关闭。再导出的时候,因为我占用了这个文件没有关闭,所以报错。

 

解决方法:

直接关闭了pdf文件即可。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ClassNotFoundException: net.sf.jasperreports.engine.fonts.SimpleFontExtension 是指在使用JasperReports报表引擎时,Java虚拟机(JVM)无法找到所需的字体扩展类。 JasperReports是一个开源的报表生成库,广泛用于Java开发中的报表生成和打印功能。在使用JasperReports时,我们可以自定义报表的样式和字体。其中,字体扩展类用于实现自定义字体的加载和使用。 出现ClassNotFoundException异常可能有以下几种原因: 1. 缺少相关的JAR包:JasperReports依赖于一些JAR包,包括字体扩展类所在的jar文件。如果缺少了这些JAR包,或者版本不对应,就会导致JVM找不到所需的类。 解决方法:检查项目的依赖配置,确保相关的JAR包被正确地引入,并且版本匹配。 2. 类路径问题:如果字体扩展类在类路径中找不到,也会导致JVM无法加载该类。 解决方法:检查类路径配置,确保字体扩展类所在的路径被正确地包含在类路径中。 3. 字体配置问题:如果自定义字体的配置文件中指定了字体扩展类,但实际上没有正确地提供该类,同样会导致JVM找不到该类。 解决方法:检查字体配置文件中的字体扩展类的指定,确保正确提供该类。 综上所述,ClassNotFoundException: net.sf.jasperreports.engine.fonts.SimpleFontExtension 异常通常是由于缺少JAR包、类路径配置错误或字体配置问题导致的。通过检查项目的依赖配置、类路径配置和字体配置,可以解决该异常。 ### 回答2: ClassNotFoundException: net.sf.jasperreports.engine.fonts.SimpleFontExtension是一个在使用JasperReports报表引擎时可能出现的异常。 JasperReports是一个开源的报表引擎,用于生成各种报表。SimpleFontExtension是其中的一个字体扩展类。当程序在运行时尝试加载该字体扩展类时,如果找不到该类文件,就会抛出ClassNotFoundException异常。 出现这个异常的原因可能有以下几种: 1. 缺少依赖库:在使用JasperReports时,需要将相关的依赖库正确地加入到程序的类路径中。如果缺少了某个必需的依赖库,就会导致找不到SimpleFontExtension类文件。 2. 版本不匹配:如果使用的JasperReports版本与程序中引用的字体扩展类的版本不匹配,也会导致找不到类文件。 解决这个问题的方法有以下几种: 1. 确保依赖库正确添加:检查程序中是否已经添加了JasperReports的相关依赖库,并且版本正确。如果没有添加或添加了错误的版本,可以尝试重新添加正确的依赖库。 2. 检查类路径设置:确认程序的类路径配置正确,包括包含JasperReports的相关库和类文件的路径。 3. 检查字体扩展类的位置:确认SimpleFontExtension类文件是否在正确的位置,可以尝试重新引入或更新该类文件。 4. 检查报表配置文件:如果报表中引用了SimpleFontExtension类,需要确保配置文件正确地指定了该类的路径和名称。 总之,classNotFoundException: net.sf.jasperreports.engine.fonts.simplefontextensio异常通常是由于缺少依赖库或配置错误引起的。通过检查依赖库、类路径和配置文件,可以解决该问题。 ### 回答3: ClassNotFoundException:net.sf.jasperreports.engine.fonts.SimpleFontExtension ClassNotFoundException是一个Java异常,表示在运行时找不到类。在这种情况下,异常为net.sf.jasperreports.engine.fonts.SimpleFontExtension,表示找不到该类。 net.sf.jasperreports是一个开源报表工具,它提供了在Java应用程序中设计和生成各种类型的报表的功能。SimpleFontExtension是其提供的字体扩展类之一。 出现ClassNotFoundException的原因可能是以下几种情况: 1. 缺少相应的jar包或依赖文件。如果在使用JasperReports库时没有将必要的jar包包含在项目中,就会导致找不到需要的类。 2. 类路径配置错误。在Java项目中,类路径是指JVM搜索要加载的类的位置。如果类路径配置不正确,JVM将无法找到所需的类。 3. 版本不兼容。如果使用的JasperReports库的版本与代码中引用的SimpleFontExtension类的版本不匹配,也会导致ClassNotFoundException异常。 解决ClassNotFoundException的方法包括: 1. 确保将正确的jar包包含在项目的类路径中。 2. 检查类路径配置,确保指向正确的位置。 3. 确认所使用的JasperReports库与代码中引用的类的版本匹配。 总结:ClassNotFoundException:net.sf.jasperreports.engine.fonts.SimpleFontExtension表示在运行时无法找到JasperReports库中提供的SimpleFontExtension类。可能原因包括缺少必要的jar包、类路径配置错误或不兼容的版本。解决方法包括添加正确的jar包、检查类路径配置以及确保库版本与代码匹配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值