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

3.用javah生成對(duì)應(yīng)的c語(yǔ)言頭文件Clear.h

4.使用Visual Studio創(chuàng)建win32工程,生成對(duì)應(yīng)的dll動(dòng)態(tài)庫(kù)
4.1 創(chuàng)建工程

4.2 應(yīng)用程序類(lèi)型:DLL

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

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

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

5 測(cè)試
5.1 把clear.dll復(fù)制到第1,2步Clear.class所在目錄.
5.2 編寫(xiě)測(cè)試類(lèi)
public class TestJNI {
public static void main(String[] args) {
System.out.println("hello jni");
Clear.clsCmd();//清屏
}
}
5.3 編譯測(cè)試類(lèi)
javac TestJNI.java
5.4 執(zhí)行測(cè)試類(lèi)
java TestJNI
完美清屏,搞定?。?!
- cmd中javac和java使用及注意事項(xiàng)詳解
- 一鍵設(shè)置java 環(huán)境變量 cmd下查看、修改(覆蓋與添加)等說(shuō)明
- 將java程序打成jar包在cmd命令行下執(zhí)行的方法
- Windows系統(tǒng)中Java調(diào)用cmd命令及執(zhí)行exe程序的方法
- java執(zhí)行windows下cmd命令的方法
- java運(yùn)行windows的cmd命令簡(jiǎn)單代碼
- Java中如何調(diào)用cmd壓縮文件
- 解決Java調(diào)用BAT批處理不彈出cmd窗口的方法分析
- Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析
相關(guān)文章
解決idea刪除模塊后重新創(chuàng)建顯示該模塊已經(jīng)被注冊(cè)的問(wèn)題
這篇文章主要介紹了解決idea刪除模塊后重新創(chuàng)建顯示該模塊已經(jīng)被注冊(cè)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn)分享
Spring Boot配置文件的優(yōu)先級(jí)是一個(gè)重要的概念,它決定了當(dāng)存在多個(gè)配置文件時(shí),哪個(gè)配置文件中的配置將被優(yōu)先采用,本文給大家介紹了SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
Java實(shí)現(xiàn)base64圖片編碼數(shù)據(jù)轉(zhuǎn)換為本地圖片的方法
這篇文章主要介紹了Java實(shí)現(xiàn)base64圖片編碼數(shù)據(jù)轉(zhuǎn)換為本地圖片的方法,涉及java編碼轉(zhuǎn)換及圖片文件生成相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
如何在java文件中設(shè)置文字顏色:setTextColor()
這篇文章主要介紹了如何在java文件中設(shè)置文字顏色:setTextColor(),文末補(bǔ)充介紹了在java代碼中設(shè)置字體顏色方法總結(jié),結(jié)合實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
吊打Java面試官之Lambda表達(dá)式 Stream API
這篇文章主要介紹了吊打Java之jdk8的新特性包括Lambda表達(dá)式、函數(shù)式接口、Stream API全面刨析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
java編程中自動(dòng)拆箱與自動(dòng)裝箱詳解
這篇文章主要介紹了java編程中自動(dòng)拆箱與自動(dòng)裝箱詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

