A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qq491786119 中级黑马   /  2015-9-22 22:42  /  195 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天写代码想在程序中使用清屏函数(cls)在jdk里面找了半天只找到一个Runtime  但是他会额外开启一个线程 但不到预期
所以就想到了用JNI调用本地c方法就是 system()函数
在用时遇到了一些问题,总结一下交流

首先编写java代码
1.class JNIjava   
{  
    static{  
       System.loadLibrary("JNIc");  
   }  
     
   public native void system();  

   public static void main(String[] args)throws Exception
   {  
                System.out.println("hello java");
                Thread.sleep(2000);
       new JNIjava().system();  
    }  

        2.然后javac 编译
       
       
        3.javah -jni JNIjava 得到c头文件
       
4.然后编写c代码
#include "jni.h"//这个必须包含
#include <windows.h>
#include "JNIjava.h"

JNIEXPORT void JNICALL  
Java_JNIjava_system(JNIEnv *env,jobject obj){  
        system("cls");
}

编译生成dll  注意dll的位数必须和jdk位数一样 不然会报错
dll要放到class文件目录下 不然会提示找不到
最后 运行JNIjava即可

新手勿喷。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马