Jni 学习笔记

最近写爬虫需要获取窗口句柄,学习一下Jni。


一、什么时候需要使用Jni?

      简单的来说就是可以让你在Java代码中嵌入其他语言的代码,可能你需要调用其他语言的类库,或者你需要你的程序执行效率更快。


二、如何使用Jni?

     1.首先写这样一段代码:

    class JniTest 
  {
    public native void displayHelloWorld();
    static {
        System.loadLibrary("hello");
    }
    
    public static void main(String[] args) {
        new JniTest().displayHelloWorld();
     }
 } 
注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因为我们要用c/c++语言实现它。注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so)。

2.编译

  注意不要造工程中去执行文件,显然是不能执行。

  解决方法:在Dos中用javac编译Java文件,生成class文件;

                    再使用javah JniTest   把class生成.h文件。

                 

     3.用一个.c 文件来实现上面的display方法,并且将其生成为.dll文件,具体做法如下:

    

     上面说的不错了,但是有一个地方,就是那个jdk下面的头文件,应该是下面三个:


就是到jdk的安装目录下include下把以下相应的文件,复制到vc目录下的include文件夹下

\jdk\include\jni.h

\jdk\include\win32\jawt_md.h

\jdk\include\win32\jni_md.h

按照下面的方法做:


,然后把.ll文件和class文件放在一起,在dos下面运行运行 Java JniTest.

这样应该是没问题,如果遇到了问题,应该是代码写的不正确,可以考虑重做一次,本人就是这样试了各种方法,最后重做解决问题!


===========================================问题来了,eclipse下面如何运行?

按照上面的步奏,只需要把.dll文件放在jre文件夹下面的bin目录,然后重启eclipse,然后运行就好了啦啦啦啦~

一定要重启一下,因为这样重新加载才能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值