我遇到了由以下代码段的CFINVOKEARGUMENT行引起的异常:
<CFOUTPUT query="cfmx.Messages"><CFSILENT>
<CFINVOKE component="com_VUI_RemoveIllegalChars" method="formatString" returnvariable="cfmx.formattedMessage">
<CFINVOKEARGUMENT name="inString" value="#TTSText#">
</CFINVOKE>
</CFSILENT>这一例外的确切案文是:
错误将类型为coldfusion.runtime.NoOperScope的对象转换为不兼容类型的coldfusion.runtime.ApplicationScope。这通常表示Java中存在编程错误,尽管这也可能意味着您试图以与设计不同的方式使用外部对象。不能将coldfusion.runtime.NoOperScope转换为coldfusion.runtime.ApplicationScope
备注:
事先感谢任何人谁能说明什么可能导致这一问题。
编辑:从异常日志中完成转储:
“错误”、"jrpp-11“、"01/06/09”、"15:11:37“、”不能将C:\Inetpub\wwwroot\ermsvui\proc_playsitestatus.cfm,转换为coldfusion.runtime.ApplicationScope“包括或处理的文件的特定顺序为:
行: 30“java.lang.ClassCastException:不能在coldfusion.runtime.RuntimeServiceImpl.getFullTagName(RuntimeServiceImpl.java:625) at coldfusion.runtime.TemplateProxyFactory.getFullName(TemplateProxyFactory.java:1082) at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:184) at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:157) at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:1267)上把coldfusion.runtime.NoOperScope投给coldfusion.runtime.ApplicationScope在coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:1218) at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:358) at cfproc_playsitestatus2ecfm1824676963.runPage(C:\Inetpub\wwwroot\ermsvui\proc_playsitestatus.cfm:30) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:192) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:366) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)在coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:86) at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:27) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) at coldfusion.filter.ClientScopePersistenceFilter.invoke(在coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38),coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46),coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38),coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22),coldfusion.CfmServlet.service(CfmServlet.java:175),coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89),jrun.servlet。coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42),coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46),jrun.servlet.FilterChain.doFilter(FilterChain.java:94),jrun.servlet.FilterChain.service(FilterChain.java:101),jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106),jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)在jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:284) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
上面的代码片段包含proc_playsitestatus.cfm的第28-32行。
编辑:
TTS文本的值是这样的:“用于测试的消息是
Com_VUI_RemoveIllegalChars的来源:
<CFCOMPONENT displayname="Format a string for use in VoiceXML" hint="returns a string formatted for voiceXML" output="yes">
<CFFUNCTION name="formatString" access="public" returntype="string" displayname="Format String" hint="Formats String for VoiceXML">
<cfargument name="inString" type="string" required="true" displayname="input string" hint="pass in the string to be formatted">
<CFSET v.messageWithoutChars = replace(inString, "<", "", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, ">", "", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "&", "and", "all")>
<CFSET v.messageWithoutChars = REReplace(v.messageWithoutChars, "\.+", ".", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "!", ".", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "\", " ", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "/", " ", "all")>
<CFSET v.messageWithoutChars = REReplace(v.messageWithoutChars, "[[:punct:]]{2,}", " ", "all")>
<cfreturn v.messageWithoutChars>
</CFFUNCTION>
</CFCOMPONENT>发布于 2009-01-07 16:04:55
在ColdFusion配置中没有启用“启用应用程序变量”设置。
发布于 2009-01-06 20:12:57
你确定那条线#吗?我想这是CFC方法本身的错误。你能检查一下吗,如果我是对的,把CFC方法中的行贴出来?
发布于 2009-01-07 13:15:39
在这里,如果没有com_VUI_RemoveIllegalChars组件的内容和TTSText变量的值,您就不会给我们提供太多的内容。你能把这些寄出去吗?(我知道有时你不能因为NDA/等原因)
https://stackoverflow.com/questions/417843
复制相似问题