是否可以从Java调用COM API?

是否可以从Java调用COM API(特别是HP / Mercury Quality Center OTA API)? 如果是这样,最好的方法是什么?

像JACOB这样适合吗?

代码片段对基础知识有帮助:-)

jacob:是的, http : //sourceforge.net/projects/jacob-project/是一个活跃的项目,可以很好地满足您的目的。

你可以看到多个例子: http : //jacob-project.wiki.sourceforge.net/Event+Callbacks

但是如果你想要更多经过测试并且愿意付钱的东西,请访问http://www.nevaobject.com/_docs/_java2com/java2com.htm 。

我也发现这很有用: com4j

你可以使用Jawin> http://jawinproject.sourceforge.net/

或尝试使用说明http://docs.rinet.ru/ZhPP/ch20.htm

Arun KY arunky

也许你应该看看http://qctools4j.sourceforge.net/它是qclylyn(http://sourceforge.net/apps/mediawiki/qcmylyn/index.php?title=Main_Page)用来检索缺陷的java库来自QC。

不幸的是,COM桥不适用于Linux,因为它加载了jacob dll

经过上述所有比较后,没有一个完全令人满意。

最完整的解决方案是https://github.com/java-native-access/jna

现在。

它支持,

  • 获取正在运行的COM对象的接口
  • 启动一个新的COM对象并返回其接口
  • 调用COM方法并返回结果
  • 可选的单独COM线程处理
  • ComEventCallbacks
  • RunninObjectTable查询
  • 低级COM使用
  • util /高级java代理抽象

例如

MsWordApp comObj = this.factory.createObject(MsWordApp.class); Documents documents = comObj.getDocuments(); _Document myDocument = documents.Add(); String path = new File(".").getAbsolutePath(); myDocument.SaveAs(path + "\\abcdefg", WdSaveFormat.wdFormatPDF); comObj.Quit(); 

j-Interop是一个Java-COM桥: j-Interop 。 它是用纯Java编写的,并在LGPL v3下获得许可。 它使用DCOM有线协议来调用COM对象,而不是JACOB使用的JNI方法。

您可以使用J-Integra COM2JAVA工具。 com2java工具生成Java“代理”类和接口,这些类和接口对应于COM类型库中包含的coclasses和接口。 它有效地生成了一个Java API,您可以使用它从Java访问COM组件。