【问题标题】:Barcode128 error - "Either there are no methods with the specified method name and argument types"Barcode128 错误 - “没有具有指定方法名称和参数类型的方法”
【发布时间】:2015-08-17 18:33:52
【问题描述】:

我有这个脚本可以在 ColdFusion 中生成条形码:

<cfscript>
   code128 = createobject("java","com.lowagie.text.pdf.Barcode128");
   code128.setCodeType(code128.CODE128);
   /* Set the code to generate */
   code128.setCode("123")
   color =  createobject("java","java.awt.Color");
   image = code128.createAwtImage(color.black, color.white);
   bufferedImage = createObject("java", "java.awt.image.BufferedImage");
   bufferedImageType = bufferedImage.TYPE_BYTE_GRAY;
   bufferedImage = bufferedImage.init(image.getWidth(JavaCast("null", "")),image.getHeight(JavaCast("null", "")), bufferedImageType);
   graphics2D = bufferedImage.createGraphics();
   graphics2D.drawImage(image,0,0,JavaCast("null", ""));
   barcodeImage = imageNew(bufferedImage);
</cfscript>

<!--- Output the code as an image --->
<cfimage action="writeToBrowser" source="#barcodeImage#" format="jpg" width="100" height="30">

我想将code128.setCode("123") 更改为动态的,即code128.setCode("#someID#")。但是,当我这样做时,我会收到一个 CF 错误:

错误信息:要么没有指定方法的方法 名称和参数类型或 setCode 方法重载 ColdFusion 无法可靠破译的参数类型。冷融合 找到 0 个与提供的参数匹配的方法。如果这是一个 Java 对象并且您验证了该方法存在,请使用 javacast 减少歧义的功能。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你是说代码可以code128.setCode("123");一起工作,但code128.setCode("#someID#");一起工作吗? #someID# 的值是多少? 该错误通常意味着它所说的内容 - a)您尝试使用类中根本不存在的方法或 b)您传递的值类型错误,并且需要使用javacast 转换它。例如,如果该方法需要一个字符串code128.setCode( javacast("string", someID) );。旁注,不确定是否是错字,但您在第三行缺少分号。

标签: coldfusion coldfusion-9


【解决方案1】:

尝试像这样传递值

code128.setCode(JavaCast("string", someID));

【讨论】:

  • Javacast 通常是答案。当您传递其他内容时,它可能会被引用为数字 - 给您 arg/method mismatch 错误。
  • 是的,如 cmets 及以上所述,javacast 可能会成功。当我用val(123) 测试它时,调用失败了。考虑到setCode() 需要一个字符串并且没有重载,但... {shrug} ,这有点令人惊讶。就像错误消息说的那样,javacast 可以治愈大多数打字问题;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多