我必须创建一个自动化Outlook和Word的应用程序,并且我希望将Java用于该任务。 (唯一允许的替代方案是VB6,所以......)
经过Google快速调查后,我发现了几个库,但我不确定使用哪个库:
我不知道如何比较这些库并做出明智的决定。似乎COM4J有点过时,JACOB泄漏内存(据称)和jacoZoom是商业版。每个人似乎都需要很多样板代码才能执行简单的方法调用。 (考虑到COM的设计,这可能是不可避免的)
除此之外,我不知道如何在其中一个之间做出选择。哪一个是最好的?
答案 0 :(得分:8)
我们在生产环境中使用雅各布,效果非常好。然而,这些项目似乎并不活跃。
说到:活动似乎是J-Interop的一个优势。我们也尝试了这个项目,看起来效果非常好,甚至更好的日志消息。我想我们可能会为新项目选择J-Interop。
COM4J似乎已经过时,你说得对。
答案 1 :(得分:5)
作为一名在Java / Linux中经验丰富但在Windows中无知的开发人员,这是我的经历(2015年8月)......
执行摘要:
更长的故事:
起初,涉及JNI的代码倾向于莫名其妙地崩溃,这使我寻找非JNI解决方案。 J-Interop似乎符合要求。
然而,当我试图让j-interop工作时,所有Windows DCOM权限和注册表废话使它成为一个完整的PITA。不同版本的Windows有所不同,所需的更改必须以管理员等方式进行。我不了解任何这种Windows垃圾,这让我想要呕吐。
然后我尝试了com4j,它就像一个冠军。这个项目设计得非常好。它从您正在使用的DLL中自动生成Java接口。 COM调用约定细节是在接口方法上使用Java注释声明的,允许您在必要时调整它们(在我的情况下不需要调整)。
github上有几个开发人员分配了项目并提供了修复,这是一个健康的信号。
唯一需要注意的是,您可能需要一些最近的修复程序,这些修补程序自2015年8月起合并到项目中,但未包含在最新版本中(从2014年3月起)。
因此,您可能需要自己进行自定义构建,包括在Visual Studio中构建DLL等。即使作为Windows仇恨者/无知者,我也能够做到这一点。
答案 2 :(得分:4)
COM4J似乎仍然活跃 - 它已被转移到Github并有一个新的主页: http://com4j.kohsuke.org/tutorial.html
答案 3 :(得分:3)
Intrinsyc Software的{J-Integra http://j-integra.intrinsyc.com/是您的最佳选择。它隐藏了必须了解不熟悉的编程语言的复杂性。它不依赖于JNI,因此您不需要了解JNI。 J-Integra也得到了积极的维护和支持,Intrinsyc为那些希望在纯64位环境中运行的人提供了纯64位版本。
Intrinsyc提供免费试用,因此您可以在进行任何购买之前对其进行测试并查看其是否有效。
HP,IBM,SAP和Oracle等公司使用它,因此您知道它将快速,稳定并得到良好的支持。
答案 4 :(得分:0)
出现bridj也可以做一些COM互操作:https://code.google.com/p/bridj/wiki/COM#Example