我在本地机器上运行 CF 9.0.1 Developer 和 Coldbox 3.0.0(在 Apache 上运行 32 位 CF9 的 64 位 Windows Vista)。我正在开发一个从 SVN 签出并在本地部署的应用程序。一切似乎都正常工作,但我的应用程序日志充满了这样的条目:
Apr 18, 2011 12:41 PM Error jrpp-7
exception.log 对每个异常都有一个非常长的堆栈跟踪,可能有 150 行左右。它从这个开始:
"Error","jrpp-4","04/18/11","11:07:30",,""
java.lang.NullPointerException
at coldfusion.util.Utils.getServletPath(Utils.java:86)
at coldfusion.util.Utils.getServletPath(Utils.java:76)
at coldfusion.util.Utils.getBaseTemplatePath(Utils.java:405)
at coldfusion.runtime.TemplateProxyFactory.getTemplateFileHelper
(TemplateProxyFactory.java:1522)
at coldfusion.runtime.MetadataUtils.getComponentMetadata
(MetadataUtils.java:112)
at coldfusion.runtime.CfJspPage.GetComponentMetaData(CfJspPage.java:2667)
at coldfusion.runtime.TemplateProxy.getRuntimeComponentMetadata
(TemplateProxy.java:1756)
at coldfusion.runtime.TemplateProxy.getRuntimeMetadata
(TemplateProxy.java:1617)
at coldfusion.runtime.MetadataUtils.getMetaData(MetadataUtils.java:54)
at coldfusion.runtime.CfJspPage.GetMetaData(CfJspPage.java:2640)
at cfEventHandler2ecfc862260423$funcPOSTLOAD.runFunction
(C:\ColdFusion9\wwwroot\ybocv5\coldbox\system\orm\hibernate
\EventHandler.cfc:30)
这是一个已经在生产中运行的应用程序版本,让我觉得这只是在我的本地版本上的是它在堆栈跟踪中的外观:
at cfdump2ecfm471394032$funcRENDEROUTPUT.runFunction
(E:\cf9_updates_rc\cfusion\wwwroot\WEB-INF\cftags\dump.cfm:704)
...
at cfCollectionPanel2ecfm961210602.runPage
(C:\ColdFusion9\wwwroot\ybocv5\coldbox\system\includes
\panels\CollectionPanel.cfm:40)
我们在生产中不使用 cfdump;这看起来像 ColdBox 试图在调试器面板中显示一个复杂的对象并失败。
到目前为止,我在网上找到的唯一内容是Google 的 transfer-dev 组中的这个线程……有人看到一堆类似的错误,并认为这可能是一个 CF9 错误。任何类型的解决方案的唯一回复是这个,建议一个似乎是特定于传输的修复。
有谁知道可能导致这些错误的原因?修复它们对我来说并不像在生产应用程序上那样重要,但是如果我用这些错误向我的日志发送垃圾邮件,那么当它们发生时很难找到合法的错误。
更新:我一直在使用 CollectionPanel.cfm 模板来确定根本原因,并且始终在此处抛出异常:
<cfelseif isObject(varVal)>
<!--- this cfdump is the guilty party ... --->
<cfdump var="#varVal#" expand="false" top="2">
<cfelse>
我尝试将其包装cfdump
在 try-catch 中,但无论如何都会抛出异常,总是来自同一行代码。我想这是有道理的,因为这些错误对它们发生的页面没有任何明显的影响。