Java使用jni清屏功能的實現(只針對cmd)
JNI簡介
JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其他語言的通信(主要是C&C++)。從Java1.1開始,JNI標準成為java平臺的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它并不妨礙你使用其他編程語言,只要調用約定受支持就可以了。使用java與本地已編譯的代碼交互,通常會喪失平臺可移植性。但是,有些情況下這樣做是可以接受的,甚至是必須的。例如,使用一些舊的庫,與硬件、操作系統進行交互,或者為了提高程序的性能。JNI標準至少要保證本地代碼能工作在任何Java 虛擬機環(huán)境。 簡單的來說JNI就是方便了Java調用c,c++語言的函數;java通過JNI提供接口(頭文件),c,c++實現這些函數供java調用。
在java中沒有提供清屏的接口,所有可以通過jni調用c語言的system(“cls”)清屏。當然,僅限于cmd清屏,不支持eclipse的控制臺console清屏。
步驟:
1. 編寫java的清屏native接口。
public class Clear {
static{
System.loadLibrary("clear");//加載clear.dll動態(tài)庫
}
public native static void clsCmd();//清屏
}
2.編譯Clear.java,生成Clear.class

3.用javah生成對應的c語言頭文件Clear.h

4.使用Visual Studio創(chuàng)建win32工程,生成對應的dll動態(tài)庫
4.1 創(chuàng)建工程

4.2 應用程序類型:DLL

4.3 把第3步生成的頭文件Clear.h,以及需要依賴的兩個頭文件jni.h和jni_md.h導入工程
jni.h在jdk的安裝路徑include目錄下。

jni_md.h在jdk安裝路徑include目錄中的win32目錄下。
把這三個頭文件先復制粘貼到工程項目目錄下:
然后在VS中把它們導入:
頭文件--->添加--->現有項--->選中上邊的三個頭文件--->添加
把Clear.h頭文件中的 #include <jni.h> 改為 #include “jni.h”
4.4 添加.cpp文件,編寫c代碼。
源文件--->添加--->新建項--->C++文件:clear.cpp
#include "Clear.h"
#include <iostream>
JNIEXPORT void JNICALL Java_Clear_clsCmd
(JNIEnv *, jclass) {
system("cls");//c的清屏
}
4.5 設置生成64位dll動態(tài)庫
解決方案--->屬性

4.6 生成dll
解決方案--->右鍵生成

5 測試
5.1 把clear.dll復制到第1,2步Clear.class所在目錄.
5.2 編寫測試類
public class TestJNI {
public static void main(String[] args) {
System.out.println("hello jni");
Clear.clsCmd();//清屏
}
}
5.3 編譯測試類
javac TestJNI.java
5.4 執(zhí)行測試類
java TestJNI
完美清屏,搞定?。。?/p>
相關文章
dubbo?filter中有關bean注入和配置文件讀取方式
這篇文章主要介紹了dubbo?filter中有關bean注入和配置文件讀取方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
SSH框架網上商城項目第13戰(zhàn)之Struts2文件上傳功能
這篇文章主要為大家詳細介紹了SSH框架網上商城項目第13戰(zhàn)之Struts2文件上傳功能的相關資料,感興趣的小伙伴們可以參考一下2016-06-06

