Objekt kann nicht miterstellt werden / Moniker | kann nicht gefunden werden Jacob

Beim Erstellen einesActiveXComponent Unter Verwendung von JACOB erhalte ich die folgende Fehlermeldung.

com.jacob.com.ComFailException: Can't co-create object
    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 com.paston.jacobtest.RidderIQ.main(RidderIQ.java:30)

Das COM-Objekt, das ich von einem Programm verwenden muss, das seine DLLs während der Installation nicht selbst registriert.

Zur Registrierung der DLL habe ich die 64bit Version von RegAsm nach verwendetdiese Artikel, der helfen könnte. Außerdem habe ich versucht, jede DLL des externen Programms zu laden, da ich vermutete, dass beim Laden der Abhängigkeiten "etwas" nicht stimmt.

Hier ist mein aktueller Code:

public static void main(String[] args) {

    String dllDir = "C:\\Program Files (x86)\\Ridder iQ Client\\Bin\\";
    File folder = new File( dllDir );

    for (final File fileEntry : folder.listFiles()) {
        String str = fileEntry.getName();
        if (str.substring(str.lastIndexOf('.') + 1).equals("dll")) {
            System.out.println(fileEntry.getName());
            System.load(dllDir + str);
        }
    }

    try {
        ActiveXComponent example = new ActiveXComponent("RidderIQSDK");
    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }

}

Wenn ich den Namen in clsid ändere, erhalte ich eine andere Ausnahme.

com.jacob.com.ComFailException: Can't find moniker
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 com.paston.jacobtest.RidderIQ.main(RidderIQ.java:28)

Ich habe JACOB dazu gebracht, mit meinem Code in einem anderen Test unter Verwendung des Random-Objekts des Systems zu arbeiten.

    ActiveXComponent random = new ActiveXComponent("clsid:4E77EC8F-51D8-386C-85FE-7DC931B7A8E7");
    Object obj = random.getObject();

    Object result = Dispatch.call((Dispatch) obj, "Next");
    System.out.println("Result: "+result);

Antworten auf die Frage(1)

Ihre Antwort auf die Frage