CF2018通过CommandBox重启后提示找不到ColdFusion组件或接口Query怎么办
报错解决方案
核心报错:Could not find the ColdFusion component or interface query
该报错的根因是ColdFusion内置组件的隐式映射或实例化开关失效,可按以下步骤排查修复:
- 先使用完整路径调用内置Query组件验证问题,将代码改为:
若修改后不再报错,可确认是内置组件映射配置丢失导致的问题。var config_qry = new cfml.Query(datasource = this.dsn); - 进入CFAdmin后台,打开「系统映射(System Mappings)」配置页,手动新增映射:
- 虚拟路径:
/cfml - 物理路径:指向当前CF实例安装目录下的
wwwroot/WEB-INF/cftags文件夹
保存配置后返回代码验证。
- 虚拟路径:
- 若上述操作无效,进入CFAdmin「全局设置(Settings)」页,确认「启用内置组件隐式实例化(Enable implicit instantiation of built-in components)」选项已勾选,该开关关闭时会禁止直接
new Query()这类内置组件的简写调用。 - 临时替代方案:可以直接用cfquery标签实现相同逻辑,无需依赖Query组件实例化:
<cfquery datasource="#this.dsn#"> UPDATE t_table SET col1 = cast(<cfqueryparam value="#newConfig#" cfsqltype="cf_sql_varchar"> as json) WHERE default_url like <cfqueryparam value="#default_url#" cfsqltype="cf_sql_varchar"> </cfquery>
CommandBox实例配置持久化(避免重启后配置丢失)
CommandBox默认启动的CF实例配置不会持久化,重启后所有CFAdmin的改动会重置,可按以下操作固定配置:
- 在CF实例启动目录下找到
server.json文件,添加如下配置:
{ "app": { "cfconfig": { "enableImplicitCFCInstantiation": true, "mappings": [ { "virtual": "/cfml", "physical": "${server.home}/wwwroot/WEB-INF/cftags", "primary": true } ] } } }
- 调整好CFAdmin配置后,在CommandBox中执行
cfconfig export server.json命令,将当前配置同步到配置文件,后续重启实例配置不会丢失。
内容的提问来源于stack exchange,提问作者Crystal
相关产品推荐
相关产品推荐

