【问题标题】:Consuming a .Net library via COM or direct integration in Java通过 COM 使用 .Net 库或在 Java 中直接集成
【发布时间】:2009-01-22 06:19:53
【问题描述】:

我不得不承认,我上一次用 Java 编程是在高中的数据结构课上。所以请善待这个 Java 菜鸟。

我花了很多时间在工作中整理一个 C# COM 库。这个库严重依赖于一些新的 .Net 技术(WPF 是最重要的),因此将其翻译成另一种语言并不是一个真正的选择。我已经测试通过 COM 接口从 C++ 使用这个库,这很简单。我还想证明同样的库可以在 Java 程序中使用。

所以我遇到的问题是我找不到免费甚​​至廉价的方式来使用 Java 中的 COM 对象。我想另一种解决方案是找到一种直接集成库的方法。有没有人对什么可能是实现这一目标的最佳方式有任何意见?我在我的 java 环境中使用 Eclipse。下面是我的 C# 代码曝光的示例。感谢您提供的任何方向。

//Example C# Object Code

[Serializable,
ComVisibleAttribute(true),
Guid("Long Guid String"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IFooBarStructure)),
ProgID("My Application")]

public class MyFooBarObject
{

   public MyFooBarObject(){}

   public string DotNetMethod(){ return String.Empty; }

}

【问题讨论】:

    标签: c# java com


    【解决方案1】:

    您可以使用JACOB

    来自网站:

    JACOB 是一个 JAVA-COM 桥接器,允许您从 Java 调用 COM 自动化组件。它使用 JNI 对 COM 和 Win32 库进行本机调用。

    听起来像你正在寻找的那种东西。

    【讨论】:

      【解决方案2】:

      如果你有一点钱可以花在商业产品上,我建议你看看 Intrinsyc 的 J-Integra for COMJ-Integra for .NET 产品。我使用他们的 COM 产品从 Java 代码访问第 3 方 ActiveX 控件(Bloomberg 数据访问库),用于我几年前从事的一个项目,并且效果非常好。他们有合理的试用/演示政策,并且对支持请求非常敏感。

      【讨论】:

        【解决方案3】:

        如果您可以通过 C++ 访问您的库,则可以通过 JNI 访问它。 JNI 很容易做到,只需仔细阅读guide,尤其是第 8.6 节,它讨论了 C 和 C++ 之间的区别

        【讨论】:

          【解决方案4】:

          直接的 Java/.NET 集成可以通过 OOJNI 完成。谷歌“.NET 的面向对象的 JNI”。

          【讨论】:

          • 不幸的是,OOJNI 的主页似乎不再可用。这也适用于 Java 中的 WPF 集成吗?现在还有下载吗?
          【解决方案5】:

          我是jni4net 的作者,它是 JVM 和 CLR 之间的开源进程内桥梁。它建立在 JNI 和 PInvoke 之上。无需 C/C++ 代码。希望对你有帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-22
            • 2018-05-21
            • 2014-07-22
            • 2017-11-25
            • 2020-10-13
            • 1970-01-01
            • 2010-10-17
            • 1970-01-01
            相关资源
            最近更新 更多