您的位置:首页 > 编程语言 > Java开发

使用 Jni 调用 Dll 的实现JAVA在cmd控制台刷屏

2015-10-24 21:21 991 查看
代码与实际图片有一定出入

有问题请留言




第一步:编写Java端代码

定义一个Java类Cls


package pacmanDemo;

/**
* Created by DH on 2015-10-24.
*/
public class Cls {

// 声明本地方法
public native void clear();
static {
//加载DLL
System.loadLibrary("ClsCPP");
}

}
定义一个调用类Main



package pacmanDemo;

import java.util.Scanner;

/**
* Created by DH on 2015-10-24.
*/
public class Main {

public static void main(String args[]){

final Cls clearScreen = new Cls();
Scanner sc = new Scanner(System.in);
System.out.print("Hello, World");
String temp = sc.nextLine();
clearScreen.clear();
}
}

编译之后在.class所在的pacmanDemo目录下执行javah pacmanDemo.Cls命令生成头文件pacmanDemo_Cls.h

若没有包,则直接javah Cls



第二步:生成DLL库

1. 打开VS,创建一个名称为ClsCpp的C++ Win32项目。在向导的应用程序类型处选择DLL,点完成。



设置Release+Win32编译配置。根据需要选择32位还是64位



2. 将签名生成的pacmanDemo_Cls.h文件拷贝到ClsCpp项目的根目录下

3.  找到jni.h和win32文件夹下的jni_md.h。它们在安装jdk的文件夹下,include文件夹,同样拷贝到项目根目录下



4.然后在VS中右键头文件文件夹添加现有项把这个头文件包含进来,接下来就是编辑Cls.cpp文件。

pacmanDemo_Cls.h里边的样子:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class pacmanDemo_Cls */

#ifndef _Included_pacmanDemo_Cls
#define _Included_pacmanDemo_Cls
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     pacmanDemo_Cls
* Method:    clear
* Signature: ()V
*/

// 下边这一句复制到Cls.cpp
JNIEXPORT void JNICALL Java_pacmanDemo_Cls_clear
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


所以Cls.cpp是这样子的

#include "jni.h"
#include "pacmanDemo_Cls.h"
#include <stdio.h>
#include <stdlib.h>

JNIEXPORT void JNICALL Java_pacmanDemo_Cls_clear(JNIEnv *, jobject) {
system("cls");
}

5.编译,生成解决方案,得到ClsCPP.dll

第三步:运行Java调用DLL程序

把产生的ClsCPP.dll文件拷贝到第一步产生.class的同一目录。

执行命令:java pacmanDemo/Main

运行查看效果





参考资料:
http://www.cnblogs.com/charley_yang/archive/2011/03/15/1985494.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java cmd