我正在尝试使用ColdFusion中的CreateObject
函数通过JNI访问DLL中的功能。我已经设法让ColdFusion使用java.lang.System.load函数加载DLL OK,但我不知道如何访问此方法中包含的函数。
我目前的代码:
<cfset CreateObject("java","java.lang.System").load("C://Path//To//JniDll.dll")>
<cfset JniObject = CreateObject("java","Organisation.product.package")>
第2行失败,错误
Object Instantiation Exception.
Class not found Organisation.product.package
我可能无法正确访问这些方法,但无法在网络上找到有关在ColdFusion中使用JNI的任何信息。
感谢您的帮助,
汤姆
答案 0 :(得分:2)
只要注册AFAIK,您就无法访问该DLL中的方法。要么你得到一个Java包装器(可能作为一个JAR)然后将使用DLL,或者你必须看到DLL公开的COM接口并通过createobject(type =“COM”)调用它们,正如其他人所建议的那样。
从您的代码和错误的外观来看,您期望存在Java类Organisation.product.package并且CF无法看到它,因此我将查看CF管理员并查看哪些路径在你的类路径中。删除JAR我假设您已进入CF的lib文件夹并重新启动CF,看看是否有所作为。
答案 1 :(得分:0)
我建议你先在java中使用它。之后,将生成的jar文件放在正确的coldfusion lib目录中,并使用CreateObject加载(java类)。 java类应该负责dll绑定。