转Java代码到ColdFusion遇Hex未定义错误,如何创建Hex对象?
解决ColdFusion中"Variable HEX is undefined"错误
错误原因是你直接引用的Hex类属于Apache Commons Codec库,ColdFusion没有自动导入该类,必须通过createObject显式调用。
修复说明:
- ColdFusion默认已内置Apache Commons Codec的jar包,无需额外引入
- 通过
createObject('java', 'org.apache.commons.codec.binary.Hex')获取Hex类对象,再调用其静态方法encodeHexString
修改后的完整代码:
<cfset input='{"id":7,"attempts":1,"notifications":[{"action":"UPDATE","message":{"id":0,"sender":"","body":"{\"TableId\":930002,\"TableName\":\"DEMOGRAPHIC\",\"TableAction\":\"UPDATE\"}"}}]}'> <cfset key = "xxxx"> <cfscript> secret = createObject('java', 'javax.crypto.spec.SecretKeySpec').Init(key.GetBytes("UTF-8"), 'HmacSHA256'); mac = createObject('java', "javax.crypto.Mac"); mac = mac.getInstance("HmacSHA256"); mac.init(secret); // 显式创建Hex类对象并调用静态方法 hex = createObject('java', 'org.apache.commons.codec.binary.Hex'); digest = hex.encodeHexString(mac.doFinal(input.GetBytes("UTF-8"))); </cfscript>
额外提示:原输入字符串中body字段内的JSON双引号未正确转义,已在代码中修正为\",避免后续JSON解析时出现错误。
内容的提问来源于stack exchange,提问作者gabriel
相关产品推荐
相关产品推荐

