是否可以从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组件。