COM4j не может подключиться к HP Quality Center

Я пытаюсь создать интерфейсы HP Quality Center OTACLien.dll, используя com4j.

Я использую следующую команду и получаю эту ошибку.

com4j версия 20110322

OTAClient.dll версии 9.1

E:\dum>java -jar tlbimp.jar -o "e:\OutPutofDLL" -p ota "e:\dum\qcdll\OTAClient.dll"
Generating definitions from TDAPIOLELib
Unable to handle the type Date*
  method GetFollowUp
  interface IFollowUpManager
Unable to handle the type (IDISPATCH)*
  method get_ItemFromServer
  interface IComponentFactory

Некоторые классы генерируются, но когда я пытаюсь подключиться к QC, используя следующий код, я получаю сообщение об ошибке.

import com4j.ComException;

import ota.ClassFactory;
import ota.ITDConnection;

public class OCComtest {

    public static void main(String[] args) {
        try{

        ITDConnection connection = ClassFactory.createTDConnection();
        connection.initConnectionEx("http://qc_server_IP:8080/qcbin/");
        System.out.println(connection.connected());
        }catch (ComException e) {
            e.printStackTrace();
        }
        }
}

Журнал ошибок

Exception in thread "main" com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
    at com4j.ComThread.execute(ComThread.java:203)
    at com4j.Task.execute(Task.java:25)
    at com4j.COM4J.createInstance(COM4J.java:97)
    at com4j.COM4J.createInstance(COM4J.java:72)
    at ota.ClassFactory.createTDConnection(ClassFactory.java:16)
    at tests.OCComtest.main(OCComtest.java:13)
Caused by: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
    at com4j.Native.createInstance(Native Method)
    at com4j.COM4J$CreateInstanceTask.call(COM4J.java:117)
    at com4j.COM4J$CreateInstanceTask.call(COM4J.java:104)
    at com4j.Task.invoke(Task.java:51)
    at com4j.ComThread.run0(ComThread.java:153)
    at com4j.ComThread.run(ComThread.java:134)

person Gaurav    schedule 25.06.2012    source источник


Ответы (2)


OTAClient.dll — это COM-компонент, поэтому для использования его необходимо зарегистрировать в системе (или объявить в манифесте при использовании SxS).

Похоже, что вам не хватает регистрации либо для самой OTACLIENT.DLL, либо для Webclient.dll.

Используйте утилиту командной строки regsvr32 для регистрации dll.

person Alex Shnayder    schedule 26.06.2012

Попробуйте следующий код для подключения, который работал у меня:

public static void main(String[] args) {    
   //QC url
   String url = "http://101.147.167.201:8081/qcbin";
   //username for login
   String username = "username";
   //password for login
   String password = "password";
   //domain
   String domain = "domian name";
   //project
   String project = "project name";
   ITDConnection connection = ClassFactory.createTDConnection();
   connection.initConnectionEx(url);
   connection.connectProjectEx(domain, project, username, password);
}
person Kochee    schedule 13.09.2012