Copy link to clipboard
Copied
Hello,
I have a simple coldfusion file that wraps html in a cfdocument tag and then saves it to a PDF file. This has worked for years on previous versions as well as in ColdFusion 2021 since we upgraded earlier this year. After a recent ColdFusion 2021 update the cfdocument is now throwing the error "ice.storm.print.PageDecoration not found by document" when it tries to generate the PDF file. Am I missing ome sort of Java library that handles the PDF or does anyone else have any ideas as to what has happened to cause the error?
Message | ice.storm.print.PageDecoration not found by document [78] |
StackTrace | java.lang.ClassNotFoundException: ice.storm.print.PageDecoration not found by document [78] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at coldfusion.tagext.document.DocumentTag.doStartTag(DocumentTag.java:1321) at cfprintcandidateV22ecfm1315926517.runPage(F:\websites\GildanBangledash\hradmin\printcandidateV2.cfm:35) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:257) at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:749) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:578) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:5201) at cfApplication2ecfc940188772$funcONREQUEST.runFunction(F:\websites\GildanBangledash\hradmin\Application.cfc:85) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:623) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:553) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:516) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:463) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:438) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:310) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:975) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:696) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:503) at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:115) at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:308) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:569) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:162) at coldfusion.filter.IpFilter.invoke(IpFilter.java:45) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:97) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:231) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:311) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:46) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:47) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:377) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:463) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) |
Copy link to clipboard
Copied
The following excerpt from the stacktrace reveals the probable cause of the error:
at cfprintcandidateV22ecfm1315926517.runPage(F:\websites\GildanBangledash\hradmin\printcandidateV2.cfm:35)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:257)
at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:749)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:578)
at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:5201)
at cfApplication2ecfc940188772$funcONREQUEST.runFunction(F:\websites\GildanBangledash\hradmin\Application.cfc:85)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:623)
...
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:553)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:516)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:463)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:438)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:310)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:975)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:696)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:503)
at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:115)
at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:308)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:569)
...
You should be using onRequestStart in Application.cfc, not onRequest.
Copy link to clipboard
Copied
Bkbk, I'm curious why you would assert that's incorrect for Jeff to have used? I don't see a connection at all. Can you elaborate?
Note also that Jeff said this code worked prior to the latest update. I don't see a connection between that choice and the recent update. I do have different suggestions for Jeff that I'll offer in another reply.
Copy link to clipboard
Copied
Bkbk, I'm curious why you would assert that's incorrect for Jeff to have used? I don't see a connection at all. Can you elaborate?
By @Charlie Arehart
Charlie, I too had a strange ClassNotFoundException immediately after I applied ColdFusion 2021 Update 5. The exception went away after I commented out the onRequest event-handler.
That said, I share the view that such ClassNotFoundExceptions may imply a bug. I in fact have been testing similar cases. But I am so far unable to reproduce them.
Copy link to clipboard
Copied
Strange. A quick check shows that the class is there all right:
<cfset pageDecorationInstance=createobject("java","ice.storm.print.PageDecoration")>
<cfdump var="#getMetadata(pageDecorationInstance).getPackageName()#" >
This confirms that the class is in the package coldfusion.runtime.java. Unless, of course, this again has to do with cache, which might be a possible, runtime connection.
All a bit iffy, I would admit. I continue to look into it.
Copy link to clipboard
Copied
Jeff, was that update 5? If so, it did have some unusual changes unlike prior ones--and the technote for it did not indicate quite all the info that has come out since, including from Adobe.
For example, and as discussed in another thread (that I see you were in fact involved in) from about a month ago, Adobe recommended clearing the felix-cache folder--to which I asked them about using the cfpm purgecache option instead (but got no reply). All that's in addition to separately clearing the cfclasses folder (both to be done while cf is down), also discussed there. Had you yet tried those?
Then there's also the longstanding possible issue that you simply had some error DURING the update. I have a post with the needed (and not obvious) details on that, which has been helping people for years to resolve "odd problems" after an update.
Can you try those and let us know if they help or not?
Copy link to clipboard
Copied
An update from my own research on the subject.
Funny that Charlie should mention CF2021 Update 5. The release notes show that the update interferred with cfdocument in at least 2 ways.
I don't remember the details, but would imagine that the exception I had had to do with REST. Perhaps the ClassNotFoundException you're getting has to do with a missing embedded font. Does the HTML in your cfdocument use any special fonts?
Copy link to clipboard
Copied
Or again just clearing cfclasses and the Felix-cache folders, as discussed in my previous note. Can you confirm you've done that, while cf is down?
Copy link to clipboard
Copied
...This has worked for years on previous versions as well as in ColdFusion 2021 since we upgraded earlier this year. After a recent ColdFusion 2021 update the cfdocument is now throwing the error "ice.storm.print.PageDecoration not found by document" when it tries to generate the PDF file. Am I missing ome sort of Java library that handles the PDF...?
By @jeffp80876634
A suggestion inspired by the information in your question: