如何使用Java中NET的DLL(How to use .Net dll in Java)

2019-09-02 09:22发布

我已经DLL在vb.net创建。 我怎样才能使用其功能在JAVA。

我发现一些JNI,而在谷歌搜索,但没有得到它。 有没有与任何例如简单的文档。

Answer 1:

我会建议Java本机访问(JNA)作为它比使用JNI容易。 比方说你有一个DLL的一些功能,

  • 创建具有相同方法签名作为DLL的功能的Java接口。

例如

public interface NativeExample{

  public int method1(String param1);
  public boolean mehthod2();

}
  • 现在,以下是您加载DLL的方法(假设它的名字是NativeLib.dll)

    NativeExample nativeExample= (NativeExample) Native.loadLibrary("NativeLib", NativeExample.class);

一旦你有了这个,你可以通过Java方法调用从DLL的方法。

`nativeExample.method("test");`

`nativeExample.method2();`

对于Java和本机之间的数据类型的映射,请参见上面的链接。

下面是一个例子 。



Answer 2:

那么,有第三方工具/库,这将帮助您连接的Java到.NET。 如果你想自己做 - 这意味着实现JNI包装器自己 - 你确实需要实现2台包装的。

JNI将让你的C / C ++,这是不允许直接访问.NET对象。 在这一点上,可以实现另一种包装,只用静态方法.NET对象,你的C / C ++包装可以调用。 由于非托管的C / C ++代码不能拥有.NET对象,它只能调用.NET类的静态方法。



Answer 3:

没错,除非你在这工作了很多JNI不会给你到.NET的直接访问。 你可以建立自己的包装,并使用C / C ++作为中间件,但对于小项目就再也不会还清。 记住,调用方法是一回事,但在经过适当类型的参数,检索结果,订阅事件etc..etc ..是多了很多。

所以我也建议检查这是很好的,这些类型的场景编写第三方工具。

首先检查至少两个:

  • Javonet
  • JNBridge的

Javonet我会建议所有小见效快的项目,因为这是光解决方案,由于程序的通信提供极高的性能和做所有后台为你工作。 您只需要调用“AddReference(your.dll)”和未来使用反射式的API调用的任何方法。 您可以调用任何方法,设置/获取字段和属性,得到的结果,订阅事件或处理异常。

非常相似的方式工作JNBridge的这对于像云集成或WebSphere但企业常用的场景点燃的一点额外的工作人员/扩展这个我会建议更大的项目是你期待的桥梁在不同的机器它的功能更强大,但更多的Java和.NET复杂和沉重,以及。

两者都是免费试用,并Javonet是免费的非商业和学术用途,所以尝试,测试和选择最适合您的需求。



文章来源: How to use .Net dll in Java