我必須將第三方COM API接口到Java應用程序中。所以我決定使用Com4j,到目前爲止我一直很滿意,但現在我遇到了一個問題。爲什麼我的Com4J界面在迭代期間掛起?
運行後tlbgen
我有一個對象叫做IAddressCollection
,它根據原始API文檔符合IEnum
接口定義。該對象提供返回java.util.Iterator<Com4jObject>
的iterator()
函數。當我想要查找消息的所有地址時,該對象來自另一個名爲IMessage
的對象。所以,我希望的代碼是這樣工作的:
IAddressCollection adrCol = IMessage.getAddressees();
Iterator<Com4jObject> adrItr = adrCol.iterator();
while(adrItr.hasNext()){
Com4jObject adrC4j = adrItr.next();
// normally here I would handle the queryInterface
// and work with the rest of the API
}
我的問題是,當我嘗試adrItr.next()
什麼也沒有發生,代碼將停止工作,但掛起。沒有例外,我通常不得不通過任務管理器殺死它。所以我想知道這是一個與Com4j
常見的問題,還是我處理這個錯誤,或者它可能是API的問題?