Как использовать java файлы в Coldfusion

Мне нужно импортировать java файл на страницу coldfusion 8, например.

public class Hello 
{ 
    public String testJava() 
    { 
    return "Hello Java!!"; 
    } 
}

В Coldfusion у меня есть следующий код:

<cfscript>
   helloWorld = CreateObject("java","Hello");
   helloTest = helloWorld.testJava();
</cfscript>

Затем я получаю сообщение об ошибке

Исключение создания объектов. Класс не найден: Здравствуйте

В моем сервере Coldfusion путь виртуальной машины Java установлен на "C:/ColdFusion8/runtime/jre", поэтому здесь я поместил свой java файл, это правильно? Должен ли я помещать там .java,.class или .jar?

Должно ли имя файла соответствовать имени класса?

У кого-нибудь есть пример кода для чего-то подобного, я могу попробовать?

Ответ 1

Вам нужно поместить файлы в путь класса JVM ColdFusion, а не в его каталог JRE.

Как правило, если у вас есть файл jar, поместите его в экземпляры WEB-INF/lib dir, если он просто класс, поместите его в директорию WEB-INF/classes, например: для меня последнее будет C:\apps\adobe\ColdFusion\11\full\cfusion\wwwroot\WEB-INF\classes, где C:\apps\adobe\ColdFusion\11\full\ находится где я установлен CF, а cfusion - это имя экземпляра.

Ответ 2

Должно ли имя файла соответствовать имени класса?

Вы имеете в виду имя файла .java? Да, но это требование Java. Если ваш класс называется "Hello", тогда ваш исходный файл должен быть назван "Hello.java" или он не будет компилироваться. Когда вы компилируете исходный код, java-компилятор будет генерировать файл с именем "Hello.class". Скопируйте этот файл в путь CF class. Соглашение заключается в размещении отдельных файлов .class внутри WEB-INF\classes и файлов jar внутри WEB-INF\lib, как упоминал Адам. Обратите внимание, что вы должны перезагрузить CF-сервер, чтобы он обнаружил новый класс (ы)

После перезапуска вы сможете создать экземпляр класса. Однако не забудьте использовать правильное имя класса в своем заявлении createObject. Это должно быть "Hello", а не "Test". Кроме того, в отличие от большинства вещей в CF, имя класса - cAsE sEnSiTive.

<cfscript>
    helloWorld = CreateObject("java","Hello");
    helloTest = helloWorld.testJava();
    WriteDump( helloTest );
</cfscript>


Update: Тем не менее, использование отдельных файлов классов отлично подходит для целей тестирования. Тем не менее, вы обычно упаковываете классы в файл .jar. С файлами jar имя файла не имеет значения. Только внутренний путь к классу имеет значение. Если ваш класс находится в пакете, вы также должны указать имя пакета. Например, если ваш класс Hello находится в пакете с именем com.utilities, полный путь:

 helloTest  = createObject("java", "com.utilities.Hello");

В терминах пути класса использование одинаково. Просто поместите файл jar в путь класса CF, т.е. WEB-INF\lib, и перезапустите. Как отметил Раймонд в комментариях, для CF10 + см. Указание пользовательского пути библиотеки Java в Application.cfc без динамической загрузки.