java 调用.net类库_java调用.Net的类库dll文件

本文介绍了如何在Java中调用.Net开发的DLL文件,包括DLL和TLB的基本概念,以及Java调用DLL的JNI、Jawin、Jacob三种方法。通过一个具体的示例,详细阐述了使用Jawin在Java中调用.Net生成的DLL和TLB文件的过程,包括创建和编译.Net接口及实现类,以及Java端的调用代码。
摘要由CSDN通过智能技术生成

最近项目开发中,需要用java去调用.net开发团队提供的service。一开始以为是以url形式提供的webservice去调用。后来才知道.net项目组提供给我们一个dll文件说里面有有两个方法供调用,一个是发送邮件的,一个是发送短信的。那么如何在通过java去调用这个用C#实现的类库中的方法呢。通过搜索一些资料最后终于实现了,下面说说是如何实现的,挺有意思的

一、实现方法的选择

1、基本概念的介绍

DLL:动态链接库(Dynamic   Link   Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。

TLB(TLB=Lib): .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。

COM组件:标准的COM组件存在方式有两种,一种是你看到的DLL还有一个方式是EXE (进程外).

注:关于DLL和TLB的区别详细信息请参考如下资源

http://www.winu.cn/ask/question.php?qid=18229

2、Java调用DLL文件的几种方法

使用Java调用DLL动态链接库的方案通常有三种:JNI, Jawin, Jacob。

其中JNI(Java Native Interface)是Java语言本身提供的调用本地已编译的函数库的方法,本身具有跨平台性,可以在不同的机器上调用不同的本地库。

Jawin和Jacob都是sourceforge.net的开源项目,都是基于JNI技术的依赖Windows的实现,使得在Windows平台下使用COM和DLL的更加方便。

JNI介绍:

JNI的应用方案是基于Java类和本地函数相映射的。其使用DLL的步骤还是相对比较麻烦,不但涉及到Java编程,还涉及到C/C++编程。

JaWin介绍:

官方网站:http://jawinproject.sourceforge.net/官方文档(Jawin介绍):http://jawinproject.sourceforge.net/jawin.html官方文档(Jawin使用DLL):http://jawinproject.sourceforge.net/jawinuserguide_dll.html官方文档(Jawin数据指令):

Jacob介绍:

Jacob是Java-Com Bridge的缩写,也可以用来调用DLL。其底层也是使用JNI实现,也具有Windows的平台依赖性,由于网上有人反映其易用性不如jawin,所以没有深入了解。

二、Java调用.Net产生的DLL

实例讲解:

准备工作:

2.配置:

将jawin.jar放于%JAVA_HOME%\jre\lib\ext下。

将jawin.dll放于c:\winnt\system32下。否则将出现错误:COMException : no jawin in java.library.path;

3.安装.netFrameWork环境。

环境已经配置好了,下面我们就从开始动手实现;

1、新建如下两个cs文件

HelloFromNETItf.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

namespace Org.Jawin.NETTest {

public interface HelloFromNETItf {

void ShowDialog(string str);

void test(string s);

}

}

HelloFromNET.cs

using System;

using System.Runtime.InteropServices; // necessary for the Guid and ProgId attributes

namespace Org.Jawin.NETTest {

public class HelloFromNET : HelloFromNETItf {

// Need a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值