Chi*_*ara 11 java import coldfusion coldfusion-8
我需要将一个java文件导入coldfusion 8页面,例如:
public class Hello
{
public String testJava()
{
return "Hello Java!!";
}
}
Run Code Online (Sandbox Code Playgroud)
在Coldfusion中,我有以下代码:
<cfscript>
helloWorld = CreateObject("java","Hello");
helloTest = helloWorld.testJava();
</cfscript>
Run Code Online (Sandbox Code Playgroud)
然后我收到错误
对象实例化异常.找不到类:你好
在我的Coldfusion服务器中,Java虚拟机路径设置为'C:/ ColdFusion8/runtime/jre',所以这是我放置我的java文件的地方,这是正确的吗?我应该放一个.java,.class或.jar吗?
文件名是否需要与类名一致?
有没有人有类似我可以尝试的类似代码?
Ada*_*ron 12
您需要将文件放在ColdFusion JVM的类路径中,而不是放在其JRE目录中.
通常,如果你有一个jar文件,把它放在实例的WEB-INF/lib目录中,如果它只是一个类,把它放在WEB-INF/classesdir中,例如:对我来说后者将是,我C:\apps\adobe\ColdFusion\11\full\cfusion\wwwroot\WEB-INF\classes在C:\apps\adobe\ColdFusion\11\full\哪里安装CF,并且cfusion是名字实例.
文件名是否需要与类名一致?
你的意思是.java文件的名字?是的,但这是一个java要求.如果您的类名为"Hello",那么您的源文件必须命名为"Hello.java",否则将无法编译.编译源代码时,java编译器将生成一个名为"Hello.class"的文件.将该文件复制到CF类路径中.惯例是将单个.class文件放在里面WEB-INF\classes,将jar文件放在里面WEB-INF\lib,就像亚当提到的那样.注意,您必须重新启动CF服务器才能检测到新类
重新启动后,您将能够创建该类的实例.但是,请确保在createObject语句中使用正确的类名.它应该是"你好" - 而不是"测试".此外,与CF中的大多数内容不同,类名是cAsE sEnSiTive.
<cfscript>
helloWorld = CreateObject("java","Hello");
helloTest = helloWorld.testJava();
WriteDump( helloTest );
</cfscript>
Run Code Online (Sandbox Code Playgroud)
更新:
也就是说,使用单个类文件可以用于测试目的.但是,您通常会将类打包到.jar文件中.对于jar文件,文件名无关紧要.只有课程的内部路径才有意义.如果您的类位于包中,则还必须包含包名.例如,如果您的Hello类位于名为的包中com.utilities,则完整路径为:
helloTest = createObject("java", "com.utilities.Hello");
Run Code Online (Sandbox Code Playgroud)
在类路径方面,用法是相同的.只需将jar文件放在CF类路径中即可WEB-INF\lib重新启动.正如Raymond在评论中提到的,对于CF10 +请参阅在Application.cfc中指定自定义Java库路径而不进行动态加载.