首页 > 解决方案 > java-无法访问 ActiveX 应用程序“com.jacob.com.ComFailException: Can't get object clsid from progid”

问题描述

我正在尝试进行面部检测和比较代码。现在对于这个项目,我将使用 ZZActiveX2.0。所以我使用jacob访问Active X。我下载了jacob-1.19并将jacob-1.19-x86.dll复制到System32并在我的java项目中注册jacob-1.19.jar。我检查了注册表中的应用程序 clsid (HKEY_CLASSES_ROOT\ACTIVEX.ActiveXCtrl.1\CLSID(Default)->"{e77e4cc8-e879-4a72-850a-b824742ec5b7}")。

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

class ActiveXTest {
    public static void main(String[] args) {       
        try {
            ActiveXComponent xl = new ActiveXComponent("{e77e4cc8-e879-4a72-850a-b824742ec5b7}");
            Dispatch xlo = xl.getObject();

        }
        catch (Exception e){
            e.printStackTrace();
        }

    }
}

但是此代码出现如下错误。

com.jacob.com.ComFailException: Can't get object clsid from progid
    at com.jacob.com.Dispatch.createInstanceNative(Native Method)
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
    at ActiveXTest.main(ActvieXTest.java:11)

我搜索了这个错误并看到了关于 Word 应用程序的示例项目。我遵循了一些解决方案,但它在我的项目中不起作用。有人建议使用 regasm 或 AutoItx,但它也不起作用。你见过这种类型的错误吗?你有没有解决这个问题?

标签: javaactivexjacob

解决方案


您必须插入注册程序名称而不是 clsid。

 ActiveXComponent activeXComponent = new ActiveXComponent("ACTIVEX.ActiveXCtrl.1");

推荐阅读