coldfusion imageDraw java.lang.Double无法转换为java.lang.String

coldfusion imageDraw java.lang.Double无法转换为java.lang.String,coldfusion,cfimage,Coldfusion,Cfimage,我正在使用imageDraw,但遇到了一个奇怪的错误。如果我只是插入值,而不尝试使用从其他地方检索到的值,它是有效的,但我必须从其他地方绘制边距和线条高度的值,然后进行计算 x = 50; y = 800; newImg = imageNew("", x, y); imageSetAntialiasing(newImg, true); setup['size'] = lineHeight*dpi; setup['font'] = "Arial"; imageDrawText(new

我正在使用imageDraw,但遇到了一个奇怪的错误。如果我只是插入值,而不尝试使用从其他地方检索到的值,它是有效的,但我必须从其他地方绘制边距和线条高度的值,然后进行计算

 x = 50;
 y = 800;
 newImg = imageNew("", x, y);
 imageSetAntialiasing(newImg, true);
 setup['size'] = lineHeight*dpi;
 setup['font'] = "Arial";
 imageDrawText(newImg,img.text,topMargin,leftMargin,setup);

当我将imageDrawText中的每个元素放在单独的行上时,错误指向属性集合设置。我确实试过这个

setup['size'] = "#lineHeight*dpi#";
但它也不起作用

调试顶部的完整错误消息:

处理请求时出错

转换对象时出错 无法将类型java.lang.Double转换为java.lang.String以 不兼容类型。这通常表示Java中存在编程错误, 虽然这也可能意味着你试图在游戏中使用外来物体 一种与设计不同的方式。不能使用java.lang.Double 转换为java.lang.String


请求帮助为我打开了渠道。找到了解决办法。问题实际上是属性集合的setup.size部分。以下是有效的方法:

setup['size'] = toString(int(lineHeight*dpi));

我不知道为什么它想把它变成一个字符串。看起来有点傻,因为我们把它当作一个数字

寻求帮助为我打开了渠道。找到了解决办法。问题实际上是属性集合的setup.size部分。以下是有效的方法:

setup['size'] = toString(int(lineHeight*dpi));

我不知道为什么它想把它变成一个字符串。看起来有点傻,因为我们把它当作一个数字

在ColdFusion 2016之前的旧版本中,这是一个bug,因为size属性是显式强制转换的:Stringsize。即使您将值作为字符串传递,您的值也可能不包含小数位,因为ColdFusion尝试将值解析为Integer:Integer.parseIntStringsize

您的解决方案使用setup['size']=ToString。。。;是解决此错误的正确方法。int以确保最后没有小数位数阻止NumberFormatException,toString以确保传递字符串阻止ClassCastException


这篇文章更像是一句评论,但太长了,不适合评论。请随意接受您自己的答案。

这是ColdFusion 2016之前的旧版本中的一个bug,因为size属性是显式铸造的:Stringsize。即使您将值作为字符串传递,您的值也可能不包含小数位,因为ColdFusion尝试将值解析为Integer:Integer.parseIntStringsize

您的解决方案使用setup['size']=ToString。。。;是解决此错误的正确方法。int以确保最后没有小数位数阻止NumberFormatException,toString以确保传递字符串阻止ClassCastException


这篇文章更像是一句评论,但太长了,不适合评论。请随意接受您自己的答案。

导致该错误的实际值是什么?很难说,因为示例中还缺少了一些变量,如线宽、dpi等。。。你能更新它并把它变成一个?FWIW吗?我不能用CF2016或2018重现你的错误,这表明它与使用的特定值有关。这就是为什么它将有助于肉一个完整的例子,再现问题-为下一个人遇到相同的问题:-什么是实际使用的值,导致错误?很难说,因为示例中还缺少了一些变量,如线宽、dpi等。。。你能更新它并把它变成一个?FWIW吗?我不能用CF2016或2018重现你的错误,这表明它与使用的特定值有关。这就是为什么它将有助于肉一个完整的例子,其中复制的问题-为下一个人遇到相同的问题:-编辑。。提交了一份新报告,以防万一编辑。。提交了一份新的bug报告以防万一