2011-11-22 44 views
3

我正嘗試使用Groovy與Jacob COM包裝器進行HP質量中心的接口,但我遇到了問題。使用Groovy和Jacob擴展惠普質量中心

當我試圖運行下面的代碼:

import com.jacob.activeX.ActiveXComponent 
import com.jacob.com.* 

def QCUrl = "http://qc.example.com/qcbin" 
def QCcom = new ActiveXComponent("TDApiOle80.TDConnection") 
def conQC = QCcom.getObject() 
Dispatch.call(conQC, 'InitConnectionEx', QCUrl) 

我得到這個異常:

com/jacob.com.ComFailException: Can't map name to dispid: InitConnectionEx 

惠普質量中心OTA清楚地表明,InitConnectionEx是我感興趣的方法;然而,我覺得我錯過了某個步驟。任何幫助將不勝感激。

回答

2

經過很多谷歌時間,我已經解決了我的問題。發生錯誤是因爲我沒有使用Admin權限啓動SoapUI。

顯然,如果您正在運行的應用程序沒有管理員權限,則無法創建必要的ActiveXObjects。當我嘗試實例化ActiveXObject時,我不會收到任何錯誤,但TDConnection對象未創建,因此InitConnectionEx不存在。

以管理員權限啓動SoapUI後,我可以連接。

我從閱讀這個article瞭解到這個想法。

2

我曾經有幸與Quality Center及其API合作過。我並沒有直接使用Jacob,而是Groovy Scriptom模塊,這使得COM腳本更加可以忍受。使用Scriptom,連接QC的代碼如下所示:

import org.codehaus.groovy.scriptom.* 

Scriptom.inApartment 
{ 
    def tdc = new ActiveXObject ('TDApiOle80.TDConnection') 
    tdc.InitConnectionEx('http://qc.example.com/qcbin') 
    tdc.Login('user', 'password') 
    tdc.Connect('domain','project') 
} 
+0

謝謝你對Christoph的迴應。我真的很喜歡Scriptom在純粹的Jacob界面上的語法。但是,在獲取所有設置並運行上述代碼示例之後,我仍然收到:'com.jacob.com.ComFailException:無法將名稱映射到dispid:InitConnectionEx'錯誤。有什麼建議? –