如何选择Java-COM桥接?[已关闭]

2022-09-01 19:21:19

我必须创建一个自动化Outlook和Word的应用程序,我想使用Java来完成该任务。(唯一允许的替代方案是VB6,所以...)

经过快速的Google调查,我发现了几个库,但我不确定使用哪一个:

我不知道如何比较这些库并做出明智的决定。似乎COM4J有点过时了,JACOB泄漏了内存(据称),而jacoZoom是商业的。每一个似乎都需要大量的样板代码来执行一个简单的方法调用。(鉴于COM的设计,这可能是不可避免的)

除此之外,我不知道如何在其中之一之间进行选择。哪一个是最好的?


答案 1

我们在生产环境中使用Jacob,效果很好。然而,这些项目似乎不是很活跃。

说到这一点:活动似乎是J-Interop的一个优势。我们也尝试了这个项目,它似乎效果很好,有更好的日志记录消息。我认为我们可能会为新项目选择J-Interop。

COM4J似乎已经过时了,你是对的。


答案 2

作为一名在Java / Linux方面经验丰富的开发人员,但在Windows方面却一无所知,这是我的经验(2015年8月)...

摘要:

  1. 使用 com4j...需要注意的是:
  2. 您可能需要构建最新(未发布的)代码才能获得一些重要的最新修复程序。

更长的故事:

起初,涉及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/无知的人,我也能够做到这一点。


推荐