我曾在集成一个简单的COM对象时都用过Jacob和Com4j。最终我选择了Com4j,主要是因为Jacob会泄漏太多内存。与Jacob相比,一旦设置好,我认为Com4j更加直接。如果我记得正确的话,Jacob在实际调用COM之前需要更多的设置和打字。而在Com4j中,你只需使用提供的工厂。
Com4j对我们来说效果还不错,但我们在路上遇到了一些问题。首先,生成的接口没有正确生成,我们需要手动进行调整。我记得最主要的问题是我们无法使 @ReturnValue
注释正常工作。此外,我们需要手动更正 @VTID
枚举。
我们面临的另一个主要问题是无法将Holder
(输出参数)类用于short
类型。最终,我们制作了一个Delphi包装器,将整数转换为短整型,而不是对Com4j进行任何更改。
最后,我记得当我集成时有点担心项目状态。似乎没有定期更新(自上次维护发布以来已经两年了)。
虽然这是一个非常老的问题,但我也建议新手使用Com4j,因为它更稳定,拥有活跃的社区,甚至有一个Maven插件来生成您的Java类。但您也可以看看“j-interop”。