Java 通过ColdFusion访问JNI DLL中的功能

Java 通过ColdFusion访问JNI DLL中的功能,java,coldfusion,java-native-interface,Java,Coldfusion,Java Native Interface,我试图使用ColdFusion中的CreateObject函数通过JNI访问DLL中的功能。我已经使用java.lang.System.load函数设法让ColdFusion加载DLL OK,但不确定如何访问此方法中包含的函数 我当前的代码: <cfset CreateObject("java","java.lang.System").load("C://Path//To//JniDll.dll")> <cfset JniObject = CreateObject("java

我试图使用ColdFusion中的
CreateObject
函数通过JNI访问DLL中的功能。我已经使用java.lang.System.load函数设法让ColdFusion加载DLL OK,但不确定如何访问此方法中包含的函数

我当前的代码:

<cfset CreateObject("java","java.lang.System").load("C://Path//To//JniDll.dll")> 
<cfset JniObject = CreateObject("java","Organisation.product.package")>
有可能我访问这些方法不正确,但是我还没有找到关于在web上的ColdFusion中使用JNI的任何信息

谢谢你的帮助


Tom

我建议您首先使用java。然后,将生成的jar文件放在正确的coldfusion lib目录中,并使用CreateObject加载(java类)。java类应该负责dll绑定。

仅通过注册它就无法访问该dll中的方法。要么您得到一个Java包装器(可能是一个JAR),然后将使用DLL,要么您必须查看DLL公开的COM接口,并按照其他人的建议,通过createobject(type=“COM”)调用它们


从代码和错误的外观来看,您希望存在一个Java类organization.product.package,而CF看不到它,因此我将查看CF管理员,看看您的类路径中有哪些路径。将JAR放入CF的lib文件夹中,重新启动CF,看看这是否会有所不同

>如果你只想使用CydFieldC++的本地C++接口,那么使用另一种方法是使用CFX方法。在某些情况下可能会更容易。嗨,Bunt-感谢这些建议,我现在只是在寻找最快的方法来处理我所拥有的(标准C++ DLL和JNI包装器DLL)。理想情况下,如果可以在ColdFusion中直接使用JNIDLL,我不想再编写另一个Java包装器。如果不是,我将考虑用Java或CFX方法构建包装器。@Loftx-我不熟悉JNI。但首先让java代码“在java中”运行通常更容易。即使您最终没有使用java包装器,使用像Eclipse这样的IDE进行故障排除也要容易得多。一旦你开始运行,把工作代码翻译成CF。他们给你提供了java的例子吗?什么样的dll?您不能使用createObject(“.net”)或createObject(“com”)有什么原因吗?嗨,Leigh,很抱歉,我不明白你所说的“什么样的dll”是什么意思?它是提供给我的一种与我需要在项目中使用的特定产品集成的方法。提供商建议它是使用Java与他们的项目集成的“最佳”。大概不可能将任何DLL与使用.net或com对象集成在一起-我假设这是专门为JNI编写的。我的意思是他们是否提供了一个可与createObject()一起使用的.net(甚至com)DLL。对产品一无所知,这可能是一个愚蠢的问题;)嗨,Leigh,据我所知,他们只提供了一个标准的DLL,可以被C等访问。还有一个JNI“包装器”DLL,我正试图使用它。谢谢你提供的额外信息-这让事情变得更清楚了。首先,我没有JAR文件——我得到了一个适合集成到Java项目中的JNIDLL。我希望我能够直接从ColdFusion使用它,而无需编写包装器。我将检查dll,看看它是否有COM接口,尽管我认为不太可能,因为它是专门作为Java的JNI接口提供的。
Object Instantiation Exception. 
Class not found Organisation.product.package