Aide relative à l'exception ColdFusion: coldfusion.runtime.NoOperScope ne peut pas être converti en coldfusion.runtime.ApplicationScope.
-
03-07-2019 - |
Question
Je rencontre une cause d'exception de la ligne CFINVOKEARGUMENT de l'extrait de code suivant:
<CFOUTPUT query="cfmx.Messages"><CFSILENT>
<CFINVOKE component="com_VUI_RemoveIllegalChars" method="formatString" returnvariable="cfmx.formattedMessage">
<CFINVOKEARGUMENT name="inString" value="#TTSText#">
</CFINVOKE>
</CFSILENT>
Le texte exact de l'exception est:
Erreur lors de la conversion d'un objet de type coldfusion.runtime.NoOperScope ne peut pas être jeté sur coldfusion.runtime.ApplicationScope à un type incompatible. Ce généralement indique une erreur de programmation en Java, bien que cela puisse aussi signifier que vous avez essayé d'utiliser un objet étranger dans un manière différente de celle qui a été conçue. coldfusion.runtime.NoOperScope ne peut pas être jeté sur coldfusion.runtime.ApplicationScope
Notes:
- cfmx.Messages est un objet renvoyé dans un CFPROCRESULT et, après examen via CFDUMP, contient les données attendues
- com_VUI_RemoveIllegalChars n'a pas du tout changé
- TTSText est une colonne valide dans le jeu de résultats
- Je pense que cela pourrait être un problème de configuration ColdFusion
Merci d'avance à tous ceux qui peuvent nous éclairer sur les causes possibles de ce problème.
EDIT: dump complet à partir du journal des exceptions:
"Erreur", "jrpp-11", "01/06/09", "15: 11: 37", "coldfusion.runtime.NoOperScope ne peut pas être jeté sur coldfusion.runtime.ApplicationScope La séquence spécifique de fichiers inclus ou traité est: C: \ Inetpub \ wwwroot \ ermsvui \ proc_playsitestatus.cfm, ligne: 30 " java.lang.ClassCastException: coldfusion.runtime.NoOperScope ne peut pas être jeté sur coldfusion.runtime.ApplicationScope à coldfusion.runtime.RuntimeServiceImpl.getFullTagName (RuntimeServiceImpl.java:625) à coldfusion.runtime.TemplateProxyFactory.getFullName (TemplateProxyFactory.java:1082) à coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:184) à coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:157) à coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:1267) à coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:1218) à coldfusion.tagext.lang.InvokeTag.doEndTag (InvokeTag.java:358) à cfproc_playsitestatus2ecfm1824676963.runPage (C: \ Inetpub \ wwwroot \ ermsvui \ proc_playsitestatus.cfm: 30) à coldfusion.runtime.CfJspPage.invoke (CfJspPage.java:192) à coldfusion.tagext.lang.IncludeTag.doStartTag (IncludeTag.java:366) à coldfusion.filter.CfincludeFilter.invoke (CfincludeFilter.java:65) à coldfusion.filter.ApplicationFilter.invoke (ApplicationFilter.java:279) à coldfusion.filter.RequestMonitorFilter.invoke (RequestMonitorFilter.java:48) à coldfusion.filter.MonitoringFilter.invoke (MonitoringFilter.java:40) à coldfusion.filter.PathFilter.invoke (PathFilter.java:86) à coldfusion.filter.LicenseFilter.invoke (LicenseFilter.java:27) à coldfusion.filter.ExceptionFilter.invoke (ExceptionFilter.java:70) à coldfusion.filter.ClientScopePersistenceFilter.invoke (ClientScopePersistenceFilter.java:28) à 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.FilterChain.doFilter (FilterChain.java:86) à 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) à jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543) à jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) à jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) à jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) à jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) à jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)
L'extrait de code ci-dessus contient les lignes 28 à 32 de proc_playsitestatus.cfm
EDIT:
La valeur du texte TTS est que la casse est "Le message à tester est"
.La source de 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>
La solution 2
Le paramètre "Activer les variables d'application" n’était pas activé dans la configuration ColdFusion.
Autres conseils
Êtes-vous sûr de cette ligne #? Je pense que l'erreur est dans la méthode CFC elle-même. Pouvez-vous vérifier cela, et si je ne me trompe pas, affichez la ligne de la méthode CFC?
Sans le contenu du composant com_VUI_RemoveIllegalChars
et la valeur de la variable TTSText
, vous ne nous en donnez pas beaucoup, ici. Pourriez-vous les poster? (Je comprends que parfois vous ne pouvez pas pour des raisons NDA / etc)