我必须将第三方 COM API 连接到 Java 应用程序中。所以我决定使用Com4j,到目前为止我很满意,但是现在我遇到了问题。
运行后,tlbgen
我有一个IAddressCollection
根据原始 API 文档调用的对象符合IEnum
接口定义。该对象提供了一个iterator()
返回java.util.Iterator<Com4jObject>
. 该对象来自另一个对象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 的问题?