通过Java

时间:2015-08-11 18:30:15

标签: java activex jacob

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

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

我对ActiveX几乎一无所知。从我的研究来看,我似乎需要一个Java到COM桥来通过Java与ActiveX控件进行交互。 JACOB项目似乎是最知名的。我的问题是我似乎无法使用这个特定的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’t co-create object错误。根据{{​​3}},看起来这与.ocx文件未正确注册有关。但是,我不能使用引用的.NET工具(即RegAsm.exe)来注册控件,因为我收到一条错误,说它不是有效的.NET程序集。并且,当我使用regsvr32.exe注册它时,注册似乎成功,但我仍然得到无法共同创建错误(我在System32和SysWOW64中尝试了regsvr32.exe)。 / p>

所有这一切,我很困惑。我愿意接受任何可以帮助我实现最终目标的建议,即使它是用更友好的硬件重新开始(尽管我找不到任何带有免费Java SDK的指纹扫描仪)。

1 个答案:

答案 0 :(得分:0)

对于任何偶然发现此事的人:

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

"解决方案"对我来说是为我的项目使用32位JRE。它并不理想,但至少我现在向前迈进了。