問題描述
如何在 java 中實現 vtable COM 接口?
How can I implement a vtable COM interface in java?
在過去,我會使用 Microsft JVM,它內置了 java-COM 互操作.現代 JRE 的等價物是什么?
In the old days, I'd use the Microsft JVM, which had built in java-COM interop. What's the equivalent for a modern JRE?
回答一個類似的SO問題雅各布.我看過 JACOB,但它基于 IDispatch,旨在控制自動化服務器.我需要的 COM 接口是自定義 vtable(擴展 IUnknown),例如IPersistStream、IOleWindow、IContextMenu 等
Answers to a similar SO question proposed JACOB. I've looked at JACOB, but that is based on IDispatch, and is aimed at controlling Automation serers. The COM interfaces I need are custom vtable (extend IUnknown), e.g. IPersistStream, IOleWindow, IContextMenu etc.
對于我的用例,我可以在 JNI 中實現所有 COM 細節,并讓 JNI 層調用 java 中的相應接口.但我希望有一個不那么痛苦的解決方案.
For my use case, I could implement all the COM specifics in JNI, and have the JNI layer call corresponding interfaces in java. But I'm hoping for a less painful solution.
這是一個開源項目,所以首選開源替代品.
It's for an open source project, so open source alternatives are preferred.
Com4j 看起來很有希望.查看可用的文檔,它似乎不支持注冊 IClassFactory,因此 COM 對象(在 java 中)可以由非 java 客戶端實例化.
Com4j looks promising. Looking through the available docs, it doesn't seem to support registering a IClassFactory so the COM object (in java) can be instantiated by non-java clients.
推薦答案
Com4J可能是你需要的.從主頁:
Com4J may be what you need. From the homepage:
直接綁定到 vtable 接口(不是 IDispatch)用于改進性能和更廣泛的支持更多 COM 接口.
Binds directly to the vtable interface (not IDispatch) for improved performance and broader support for more COM interfaces.
這篇關于java-COM interop:用Java實現COM接口的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!