通过Java在ActiveX控件(.ocx)中发出调用方法

通过Java在ActiveX控件(.ocx)中发出调用方法,java,activex,jacob,Java,Activex,Jacob,我的最终目标是从Java应用程序中的指纹扫描仪获取JPG。我不需要做任何识别或登录 我有一个签名板/指纹扫描仪。他们为设备的指纹扫描仪部分提供的SDK称为。问题是它只能作为ActiveX控件使用 我对ActiveX几乎一无所知。根据我的研究,我似乎需要一个Java到COM的桥来通过Java和ActiveX控件交互。这个项目似乎是最有名的。我的问题是,我似乎无法使它与这个特定的ActiveX控件文件一起工作 我的超级高级Java程序如下所示: import com.jacob.activeX.Ac

我的最终目标是从Java应用程序中的指纹扫描仪获取JPG。我不需要做任何识别或登录

我有一个签名板/指纹扫描仪。他们为设备的指纹扫描仪部分提供的SDK称为。问题是它只能作为ActiveX控件使用

我对ActiveX几乎一无所知。根据我的研究,我似乎需要一个Java到COM的桥来通过Java和ActiveX控件交互。这个项目似乎是最有名的。我的问题是,我似乎无法使它与这个特定的ActiveX控件文件一起工作

我的超级高级Java程序如下所示:

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;

public class JacobTest {

    public static void main(String[] args) {

        Dispatch test = new ActiveXComponent("SigIDp.SigIDp1");

        Dispatch.call(test, "CreateJpg");
    }
}
问题是,当我尝试创建新的ActiveXComponent对象时,会出现
com.jacob.com.ComFailException:Can not co create object
错误。根据,这似乎与.ocx文件未正确注册有关。但是,我无法使用引用的.NET工具(即,
RegAsm.exe
)注册该控件,因为我收到一个错误,指出它不是有效的.NET程序集。而且,当我使用
regsvr32.exe
注册它时,注册似乎成功了,但我仍然得到了无法共同创建错误(我在System32和SysWOW64中尝试了
regsvr32.exe


所有这些都说明了,我被卡住了。我愿意接受任何有助于我实现最终目标的建议,即使是从更友好的硬件开始(尽管我很难找到任何带有免费Java SDK的指纹扫描仪)。

对于其他偶然发现这一点的人:

事实证明,这毕竟是一个架构问题。所讨论的ActiveX控件似乎只有32位形式。因此,我使用哪个版本的
regsvr32.exe
尝试注册它并不重要,因为(据我所知)运行在64位JRE中的应用程序无法与32位ActiveX控件交互


我的“解决方案”是在我的项目中使用32位JRE。这并不理想,但至少我现在正在向前迈进。

在调用ActiveX控件的方法时,我面临着同样的问题。com.jacob.com.ComFailException:遇到com异常:调用:Connect Description:8000ffff/灾难性故障不幸的是,我不知道该错误的含义。您可能会更幸运地发布自己的新问题。谢谢您的反馈。经过一些研究,我知道问题不在于雅各布方法。自定义控件(用C++开发)不兼容(我猜)。同样的方法适用于采用不同技术开发的另一个控件(VB6)。