使用JNI实现Windows下的控制台清屏(JDK13)
事情的起因是这样的:学校的实验课要求做一个棋类的应用,自己设计spec来实践软件知识。然而在设计显示棋盘的时候,我震惊地发现使用Windows下Java实现控制台清屏还真的没什么办法。为了更新棋盘,当然要频繁清空控制台的显示。控制台作为显示本来就够low了,要是再没点要求,那也太混了。
网上查找了一圈,总体来说有几种:
①:打印到输出一堆空行,直接把上一层的输入顶出显示区域。简直要把人看乐了。这有什么用啊??鼠标滚轮挪一挪,拙劣的实现方法就暴露无遗了。这就好像大学校舍里的破旧宿舍楼,留在校园内部,外部用一圈好看的大楼藏住,有什么用啊,大学是公共区域谁都能进,往里一看就都知道了。
②:stackoverflow上的答案,被人用机翻翻了好几个版本,意思是调用RunTime.getRuntime().exec(“cls”)来执行命令行的清屏命令。可是在IDEA中实际用了一下却报错,不知道为什么找不到这个命令,明明在cmd中直接cls是可以的啊?也许是IDEA的问题。不过后来我不纠结这一点了,因为原来这个方法的效果是在新开的进程中执行命令,那样的话即便cls能执行,也不能影响到当前进程。网上似乎还有方法将标准输出重定向,但是为了实现一个清屏功能,显得过于大费周章。
③:使用Java本地方法,调用本地的c语言的dll,c中的函数只需要System(“cls”)就行了,很方便。不过这方面网上的教程都不是很全,正好权当学学JNI了。
在开始之前,确定你的Windows中已经安装了MinGW。
JNI
JNI就是Java Native Interface,顾名思义,是用来跟本地的方法交互的。既然强调了是本地的,而Java的关键特点是虚拟机跨平台,很显然JNI是为了通过Java执行其他语言的程序而准备的了。
首先编写一个ClearScreen类,类中声明一个本地函数 Cls。

本文介绍了如何使用Java Native Interface (JNI) 在Windows下实现控制台清屏功能。由于Java本身无法直接完成此操作,作者通过JNI调用本地C语言的dll,详细阐述了从创建Java类、生成头文件、编写C代码、编译dll到最终在Java程序中加载和调用dll的全过程。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=105377878&d=1&t=3&u=dbd63daef15a446fb801114d5cded72d)
223

被折叠的 条评论
为什么被折叠?



