2012-06-25 67 views
1

我正試圖使用​​com4j生成HP Quality Center OTACLien.dll的接口。COM4j無法連接到HP質量中心

我使用以下命令並獲取此錯誤。

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) 

回答

2

OTAClient.dll是一個COM組件,這樣就要求在系統中註冊被消耗(或宣佈在清單如果使用的SxS )。

似乎您缺少OTACLIENT.DLL本身或Webclient.dll的註冊。

使用regsvr32命令行工具來註冊dll。

連接
0

嘗試下面的代碼爲我工作:

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); 
}