1

有一个 Swing 应用程序使用DynamicReports(反过来构建在 Jasper 报告之上)来打印(显示和保存)pdf 文件。

该应用程序在Swing应用程序的Eclipse调用中运行顺利,但在作为可执行 jar 运行时失败。FileNotFoundException(Access is denied)

以下堆栈跟踪:

    C:\WINDOWS\system32\Report_1370232068590_862159.java
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperReport(JasperReportBuilder.java:278) ~[jar:rsrc:dynamicreports-core-3.1.3.jar!/:na]
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperPrint(JasperReportBuilder.java:308) ~[jar:rsrc:dynamicreports-core-3.1.3.jar!/:na]
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.export(JasperReportBuilder.java:596) ~[jar:rsrc:dynamicreports-core-3.1.3.jar!/:na]
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toPdf(JasperReportBuilder.java:516) ~[jar:rsrc:dynamicreports-core-3.1.3.jar!/:na]
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toPdf(JasperReportBuilder.java:512) ~[jar:rsrc:dynamicreports-core-3.1.3.jar!/:na]
    at test.firewall.desktop.FirewallAccessTask.makeFirewallPIEChart(FirewallAccessTask.java:130) [rsrc:./:na]
    at test.firewall.desktop.FirewallAccessTask.doInBackground(FirewallAccessTask.java:86) [rsrc:./:na]
    at test.firewall.desktop.FirewallAccessTask.doInBackground(FirewallAccessTask.java:1) [rsrc:./:na]
    at javax.swing.SwingWorker$1.call(Unknown Source) [na:1.7.0_21]
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.7.0_21]
    at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.7.0_21]
    at javax.swing.SwingWorker.run(Unknown Source) [na:1.7.0_21]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_21]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_21]
    at java.lang.Thread.run(Unknown Source) [na:1.7.0_21]
Caused by: net.sf.jasperreports.engine.JRException: Error saving expressions class file : C:\WINDOWS\system32\Report_1370232068590_862159.java
    at net.sf.jasperreports.engine.util.JRSaver.saveClassSource(JRSaver.java:153) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.getSourceFile(JRAbstractCompiler.java:310) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.createCompileUnit(JRAbstractCompiler.java:282) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:177) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:240) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:490) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperReport(JasperReportBuilder.java:275) ~[jar:rsrc:dynamicreports-core-3.1.3.jar!/:na]
    ... 14 common frames omitted
Caused by: java.io.FileNotFoundException: C:\WINDOWS\system32\Report_1370232068590_862159.java (Access is denied)
    at java.io.FileOutputStream.open(Native Method) ~[na:1.7.0_21]
    at java.io.FileOutputStream.<init>(Unknown Source) ~[na:1.7.0_21]
    at java.io.FileOutputStream.<init>(Unknown Source) ~[na:1.7.0_21]
    at java.io.FileWriter.<init>(Unknown Source) ~[na:1.7.0_21]
    at net.sf.jasperreports.engine.util.JRSaver.saveClassSource(JRSaver.java:145) ~[jar:rsrc:jasperreports-5.0.4.jar!/:na]
    ... 20 common frames omitted
4

1 回答 1

1

在此处输入代码看起来像您的文件

C:\WINDOWS\system32\Report_1370232068590_862159.java没有读取权限。

给它一个权限:

右键单击文件 --> 转到属性 --> 安全 --> 编辑 --> 授予您的用户完全控制权限

我想,这可能会解决你的问题。

于 2013-06-03T04:37:45.200 回答