Я нашел обходной путь, используя этот метод
https://www.bennadel.com/blog/1980-tojava---a-coldfusion-user-defined-function-for-complex-java-casting.htm
Я считаю, что есть ошибка с Javacast и javaSettings loadPaths не используются.
coldfusion.runtime.Cast $ UnknownTypeException: невозможно преобразовать значение в массив Java, поскольку тип org.elasticsearch.client.Node неизвестен.at coldfusion.runtime.Cast.toJavaArray (Cast.java:1602)
Кроме того, если я пытаюсь выполнить действия, выполняемые UDF
local.javaClass = createObject("java", "org.apache.http.HttpHost");
local.HostArrayReflect = createObject("java", "java.lang.reflect.Array");
local.HostArray = local.HostArrayReflect.newInstance(
local.javaClass.GetClass()
, JavaCast( "int", ArrayLen(local.Hosts))
);
for (i=0; i LT ArrayLen(local.Hosts); i=i+1) {
local.HostArrayReflect.Set(local.HostArray, JavaCast("int", i), local.Hosts[i]);
}
, я получаю сообщение об ошибке
Исключительная ситуация при создании экземпляра объекта Java.Класс не должен быть интерфейсом или абстрактным классом.Если у класса есть конструктор, который принимает аргумент, вы должны явно вызвать конструктор, используя метод init (args).Ошибка: org.apache.http.HttpHost
java.lang.NoSuchMethodException: org.apache.http.HttpHost. () В java.lang.Class.getConstructor0 (Class.java:3082) в java.lang.Class.newInstance (Class.java:412) в coldfusion.runtime.java.JavaProxy.createObjectWithDefaultConstructor (JavaProxy.java:209) в coldfusion.runtime.java.JavaProxy.invoke (JavaProxy.java:92)
1021*
Это происходит, когда я пытаюсь запустить getClass()
, но в UDF проблем нет.Коллега попытался запустить это на Люси, и, похоже, это сработало, поэтому я считаю, что в CF есть ошибка, связанная с этим.