2013-06-03 49 views
1

使用DynamicReports(它依次構建在Jasper報告上)使用Swing應用程序打印(顯示並保存)pdf文件。JasperReports錯誤|嘗試從窗口下的System32文件夾加載文件

應用程序運行流暢在Eclipse中調用的搖擺的應用程序,但無法給予FileNotFoundException(Access is denied),當跑爲可執行的JAR。

以下堆棧跟蹤:

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 

回答

1

C:\WINDOWS\system32\Report_1370232068590_862159.java輸入代碼herelooks喜歡你的文件不具有讀取權限。

給它的權限:對文件

右擊 - >去屬性 - >安全 - >編輯 - > 給你的用戶權限,完全控制

我認爲,這可能會解決您的問題。

+1

感謝您的回覆,但我的問題是爲什麼它要去Windows/System32文件夾,當我沒有在程序中配置任何類似的東西時。搜索了很多後,我有一個鏈接[鏈接](http://community.jaspersoft.com/questions/507805/classpath-jasperreports)它是類路徑問題,然後再次,我怎麼能指定Jasper報告jar classpath,在一個可運行的打包jar(Jasper Report jar也被打包)。我試圖做文章中解釋的一切,但沒用。任何幫助都感激不盡。 – Kumaran

+0

在Linux上,使用古老版本的Jasper,我遇到了類似的問題。 它試圖將臨時的動態生成的Java文件寫入/ var/lib/tomcat8,但tomcat沒有該文件夾的寫入權限。 本質上,它是在不同平臺上的相同問題。 我完全同意你想指定Jasper寫入臨時文件的位置 – dbh

相關問題