Well, I upgraded my development pc to windows 10 from windows 7. When I try to run my application that was previously working now it generates a weird error.
I use BIPublisher.FOprocessor to generate pdfs for reporting. I use jdk7 with Netbeans8.0.2 IDE and my web application runs on Apache Tomcat 7.0.27
When I try to generate the pdf
//Now process the XSLFO template against the XML data
// Instantiate the FOprocessor
FOProcessor processor = new FOProcessor();
// set CFG input file
processor.setConfig(sourceFileLocation + "xdo.cfg");
// set XML input file
processor.setData(sourceOutputFileLocation + inputXMLFile);
// set XSL input file
processor.setTemplate(sourceOutputFileLocation + inputXSLFile);
// set the output format
if (fOutputFormat.equalsIgnoreCase(".pdf")) {
processor.setOutputFormat(FOProcessor.FORMAT_PDF);
} else if (fOutputFormat.equalsIgnoreCase(".html")) {
processor.setOutputFormat(FOProcessor.FORMAT_HTML);
} else if (fOutputFormat.equalsIgnoreCase(".xls")) {
processor.setOutputFormat(FOProcessor.FORMAT_EXCEL);
} else if (fOutputFormat.equalsIgnoreCase(".rtf")) {
processor.setOutputFormat(FOProcessor.FORMAT_RTF);
} else {
processor.setOutputFormat(FOProcessor.FORMAT_PDF);
outputFile = Fname + rInt + ".pdf";
}
//set output file
processor.setOutput(outputLocation + outputFile);
processor.generate(); //HERE IS THE EXCEPTION
I get the following exception
WARNING: oracle.xdo.XDOIOException: java.io.IOException: Access is denied
at oracle.xdo.template.FOProcessor.getTmpFOFile(FOProcessor.java:2003)
at oracle.xdo.template.FOProcessor.createFO(FOProcessor.java:1971)
at oracle.xdo.template.FOProcessor.generate(FOProcessor.java:1117)
at admin.reports.XMLpublisher.foProcessorEngine(XMLpublisher.java:97)
at admin.reports.XMLpublisher.XMLout_CreateDocument(XMLpublisher.java:371)
at admin.db.TR.DownloadAttendeeLunchList.getReport(DownloadAttendeeLunchList.java:101)
at admin.db.TR.DownloadAttendeeLunchList.processRequest(DownloadAttendeeLunchList.java:42)
at admin.db.TR.DownloadAttendeeLunchList.doGet(DownloadAttendeeLunchList.java:128)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.opcat.gzip.GZIPFilter.doFilter(GZIPFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Access is denied
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(File.java:2001)
at oracle.xdo.common.tmp.TmpFile.createTmpFile(TmpFile.java:85)
at oracle.xdo.template.FOProcessor.getTmpFOFile(FOProcessor.java:1999)
... 28 more
Feb 25, 2016 1:02:57 PM oracle.xdo.template.FOProcessor
SEVERE: End Memory: max=2709MB, total=872MB, free=117MB
I tried a lot of solutions so far but none works:
- Give Permissions to output directory
- Move the output directory away from the root (c:)
- Run my Tomcat as Administrator
- Give full permissions of the user to my local drive
I am out of ideas. Anyone with a clue what is the issue here? Clearly the code is not the issue because it is running ok in Windows 7, and windows server 2008 where is deployed my production environment.