你如何在Coldfusion中使用java文件

时间:2014-05-29 06:09:16

标签: java coldfusion import coldfusion-8

我需要将一个java文件导入coldfusion 8页面,例如:

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

在Coldfusion中,我有以下代码:

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

然后我收到错误

  

对象实例化异常。找不到课程:你好

在我的Coldfusion服务器中,Java虚拟机路径被设置为&#39; C:/ ColdFusion8 / runtime / jre&#39;,所以这就是我放置我的java文件的地方,这是正确的吗?我应该在那里放一个.java,.class或.jar吗?

文件名是否需要与班级名称一致?

有没有人有类似我可以尝试的类似代码?

3 个答案:

答案 0 :(得分:12)

您需要将文件放在ColdFusion JVM的类路径中,而不是放在其JRE目录中。

作为一项规则,如果您有一个jar文件,请将其放在实例的WEB-INF/lib目录中,如果它只是一个类,请将其放在WEB-INF/classes目录中例如:对我来说,后者是C:\apps\adobe\ColdFusion\11\full\cfusion\wwwroot\WEB-INF\classes,其中C:\apps\adobe\ColdFusion\11\full\是我安装CF的地方,而cfusion是实例的名称。

答案 1 :(得分:7)

  

文件名是否需要与班级名称一致?

你的意思是.java文件的名称?是的,但这是一个java要求。如果您的类名为“Hello”,那么您的源文件必须命名为“Hello.java”,否则将无法编译。编译源代码时,java编译器将生成一个名为“Hello.class”的文件。将该文件复制到CF class path。惯例是将单个.class文件放在WEB-INF\classes内,将jar文件放在WEB-INF\lib内,如Adam所述。 注意,您必须重新启动CF服务器才能检测新类

重新启动后,您将能够创建该类的实例。但是,请确保在createObject语句中使用正确的类名。它应该是“你好” - 而不是“测试”。此外,与CF中的大多数内容不同,类名是cAsE sEnSiTive。

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


<强>更新 也就是说,使用单个类文件可以用于测试目的。但是,您通常会将类打包到.jar文件中。对于jar文件,文件名无关紧要。只有课程的内部路径才有意义。如果您的类位于包中,则还必须包含包名。例如,如果您的Hello类位于名为com.utilities的包中,则完整路径为:

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

就类路径而言,用法是相同的。只需将jar文件放在CF类路径即WEB-INF\lib中并重新启动即可。正如Raymond在评论中提到的,对于CF10 +,请参阅Specifying custom Java library path in the Application.cfc without dynamic loading

答案 2 :(得分:0)

您真的应该考虑使用Mark Mandel的JavaLoader。 这将使您的生活更轻松:-) https://github.com/markmandel/JavaLoader