通过COM使用.Net库或在Java中直接集成

时间:2009-01-22 06:19:54

标签: c# java com

我不得不承认我最后一次用Java编程是高中时的数据结构课程。所以请善待这个Java noob。

我花了很多时间在工作中组建一个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; }

}

5 个答案:

答案 0 :(得分:1)

您可以使用JACOB

来自网站:

  

JACOB是一个JAVA-COM Bridge,允许您从Java调用COM Automation组件。它使用JNI对COM和Win32库进行本机调用。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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