【问题标题】:JasperReports Error | Trying to load file from System32 folder under windowsJasperReports 错误 |尝试从 Windows 下的 System32 文件夹加载文件
【发布时间】:2013-06-03 04:16:12
【问题描述】:

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

应用程序在 Eclipse 调用 Swing 应用程序时运行顺利,但在作为可执行 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

【问题讨论】:

    标签: java swing jasper-reports dynamic-reports


    【解决方案1】:

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

    处的文件

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

    给它一个权限:

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

    我认为,这可能会解决您的问题。

    【讨论】:

    • 感谢您的回复,但我的问题是为什么它会进入 Windows/System32 文件夹,而我没有在程序中配置任何类似的东西。经过大量搜索后,我得到了一个链接link,这是类路径问题,然后,我如何在可运行的打包 jar 中指定 Jasper Report jar 类路径(Jasper Report jar 也已打包)。我试图做文章中解释的所有事情,但没有用。任何帮助将不胜感激。
    • 在Linux上,使用Jasper的一个古老版本,我遇到了类似的问题。它试图将临时的、动态生成的 Java 文件写入 /var/lib/tomcat8,但 tomcat 没有对该文件夹的写入权限。本质上这是在不同平台上的相同问题。我完全同意您希望指定 Jasper 写入临时文件的位置
    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2012-03-04
    相关资源
    最近更新 更多