我最近开始在本地环境中使用commandBox来运行ColdFusion。在我尝试了一段时间后,我遇到了一个与adminapi相关的问题。下面是我在我的一个项目中使用的代码:
adminObj = createObject("component","cfide.adminapi.runtime");
instance = adminObj.getInstanceName();这段代码非常简单,如果我在机器上安装传统的ColdFusion Developer版本,它就能很好地工作。我试着在commandBox上运行这个:"app":{ "cfengine":"adobe@2018.0.7" }
在我运行上面的代码之后,这是我得到的错误消息:
Object Instantiation Exception.
Class not found: com.adobe.coldfusion.entman.ProcessServer第一个调试步骤是检查组件是否存在。我只是像这样检查了一下:
adminObj = createObject("component","cfide.adminapi.runtime");
writeDump(adminObj);我在屏幕上看到的结果是:
component CFIDE.adminapi.runtime
extends CFIDE.adminapi.base
METHODS然后我尝试这样做,以确保方法存在于作用域中:
adminObj = createObject("component","cfide.adminapi.runtime");
writeDump(adminObj.getInstanceName);输出如下所示,这确认了方法getInstanceName的存在。
function getInstanceName
Arguments: none
ReturnType: any
Roles:
Access: public
Output: false
DisplayName:
Hint: returns the current instance name
Description:只有当我调用函数getInstanceName()时,才会发生错误。有人知道这个错误的原因是什么吗?对于这个特殊的问题有什么解决方案吗?正如我已经提到的,这种方法适用于传统的ColdFusion 2018开发环境。谢谢。
发布于 2020-09-25 00:15:05
这是Adobe ColdFusion中的一个错误。您正在创建的CFC正在尝试创建一个特定Java类的实例。我认识到类名com.adobe.coldfusion.entman.ProcessServer与他们的企业管理器相关,企业管理器控制着仅在某些版本的CF中可用的特性,以及仅在其“标准”Tomcat安装中可用的特性(与CommandBox等J2E部署相反)。
请将此情况报告给Adobe bug tracker中的Adobe,因为它们似乎错误地检测到servlet安装。几年前,我和他们一起改进了他们在CommandBox上的servlet检测,但我猜他们仍然有一些问题。
作为一种解决办法,您可以尝试找出Adobe ColdFusion的非CommandBox安装上的那个jar类,并将其添加到路径中,但我不能保证它会正常工作,也不会产生负面影响。
https://stackoverflow.com/questions/64049904
复制相似问题