Java使用jni清屏功能的实现(只针对cmd)

 更新时间:2018年05月26日 09:45:57   作者:雅钧  
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。这篇文章主要介绍了Java使用jni清屏功能的实现(只针对cmd) ,感兴趣的朋友跟随脚本之家小编一起学习吧

JNI简介

       JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。 简单的来说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动态库
  }
  public native static void clsCmd();//清屏
  }

2.编译Clear.java,生成Clear.class

3.用javah生成对应的c语言头文件Clear.h

4.使用Visual Studio创建win32工程,生成对应的dll动态库

4.1 创建工程

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动态库

解决方案--->属性

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 执行测试类

     java TestJNI

    完美清屏,搞定!!!

相关文章

  • java使用正则抓取网页邮箱

    java使用正则抓取网页邮箱

    这篇文章主要为大家详细介绍了java使用正则抓取网页邮箱的相关资料,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 解决idea删除模块后重新创建显示该模块已经被注册的问题

    解决idea删除模块后重新创建显示该模块已经被注册的问题

    这篇文章主要介绍了解决idea删除模块后重新创建显示该模块已经被注册的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot配置文件高级用法实战分享

    SpringBoot配置文件高级用法实战分享

    Spring Boot配置文件的优先级是一个重要的概念,它决定了当存在多个配置文件时,哪个配置文件中的配置将被优先采用,本文给大家介绍了SpringBoot配置文件高级用法实战,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 超详细解释Java反射

    超详细解释Java反射

    本文非常详细的讲解了java反射具体的内容以及使用,java反射在现今的使用中很频繁,希望此文可以帮大家解答疑惑,可以帮助大家理解
    2021-11-11
  • Java实现base64图片编码数据转换为本地图片的方法

    Java实现base64图片编码数据转换为本地图片的方法

    这篇文章主要介绍了Java实现base64图片编码数据转换为本地图片的方法,涉及java编码转换及图片文件生成相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 如何在java文件中设置文字颜色:setTextColor()

    如何在java文件中设置文字颜色:setTextColor()

    这篇文章主要介绍了如何在java文件中设置文字颜色:setTextColor(),文末补充介绍了在java代码中设置字体颜色方法总结,结合实例代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 吊打Java面试官之Lambda表达式 Stream API

    吊打Java面试官之Lambda表达式 Stream API

    这篇文章主要介绍了吊打Java之jdk8的新特性包括Lambda表达式、函数式接口、Stream API全面刨析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 深入理解java重载和重写

    深入理解java重载和重写

    这篇文章主要介绍了Java方法重载和重写原理区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-07-07
  • Java Lambda表达式实例解析原理

    Java Lambda表达式实例解析原理

    日常开发中,我们很多时候需要用到Java 8的Lambda表达式,它允许把函数作为一个方法的参数,让我们的代码更优雅、更简洁。所以整理了一波工作中常用的Lambda表达式。看完一定会有帮助的
    2023-03-03
  • java编程中自动拆箱与自动装箱详解

    java编程中自动拆箱与自动装箱详解

    这篇文章主要介绍了java编程中自动拆箱与自动装箱详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论