2015-08-17 3 views
1

у меня есть этот скрипт для создания штрих-кода в ColdFusion:Barcode128 ошибка - «Либо нет методов с указанным именем метода и аргументов типов»

<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:

Error message: Either there are no methods with the specified method name and argument types or the setCode method is overloaded with argument types that ColdFusion cannot decipher reliably. ColdFusion found 0 methods that match the provided arguments. If this is a Java object and you verified that the method exists, use the javacast function to reduce ambiguity.

Может кто-нибудь помочь мне с этим?

+2

Вы говорите, код * делает * работа с 'code128.setCode ("123");' но * не * работа с 'code128.setCode (» #someID # ");'? Каково значение # someID #? ** Эта ошибка обычно означает именно то, что она говорит ** - либо a) вы пытаетесь использовать метод, который не существует в классе вообще ИЛИ b) вы передаете неправильный тип значения и должны использовать ' javacast', чтобы преобразовать его. Например, если этот метод ожидает строку 'code128.setCode (javacast (" string ", someID);'. Боковое замечание, не уверен, что это опечатка, но вам не хватает полуколонии на третьей строке. – Leigh

ответ

6

Попробуйте передавая значение как этот

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

Явакаст обычно является ответом. когда вы передаете что-то другое, на него можно ссылаться как число, что дает ошибку несоответствия arg/method. –

+0

Да, как упоминалось в комментариях и выше, javacast, вероятно, сделает трюк. Когда я протестировал его с помощью «val (123)», вызов завершился неудачно. Немного удивительно, что это необходимо, учитывая, что 'setCode()' ожидает строку и не перегружается, но ... {shrug}. Как и сообщение об ошибке, javacast излечивает большинство типизирующих болезней ;-) – Leigh

 Смежные вопросы

  • Нет связанных вопросов^_^