通过ColdFusion访问JNI DLL中的功能

时间:2011-08-17 16:43:40

标签: java coldfusion java-native-interface

我正在尝试使用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的任何信息。

感谢您的帮助,

汤姆

2 个答案:

答案 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绑定。