学习 Java 的过程中,经常编个控制台程序来做些测试。在命令行里运行Java程序时,清屏真是个麻烦的事情。但是不清屏,这程序实在没法看。最后还是实现了,哈哈。
先讲如何使用。
只适合 Windows 系统。
解压之后得到 CLS.class 和 cls.dll 。把两者放到同一文件夹下(比如跟你的 class 文件放到相同目录)。在你的程序中需要清除屏幕输出时,调用方法 CLS.CLS()
,即可实现。
这个是演示,Java 程序刚刚启动时候的效果。
下面开始扯淡。
哥,你这是刷屏
刚遇到这问题时候 Google 了半天。在某论坛也有人问这个问题。某人回答到:
输出100个换行试试? 然后另一人回复: 我怎么觉得你这不是清屏,像是刷屏呢? 哈哈,当时我就笑喷了。说点正经的,有个方法多数人都提到过,但是不管用:
Runtime
比如下面两种办法:
Runtime.getRuntime().exec("cmd /c cls");
Runtime.getRuntime().exec("exec.bat");//批处理之中有一句 cls
第一个办法打开了一个新的 DOS 窗口,并没有实现原窗口清屏。第二种我试了几次,完全没有效果。
JNI
这个还是很靠谱的,虽然有点大材小用了。之前也见有人提到挂载 DLL 文件来实现,但还是一头雾水。直到找到了《Java and the DOS "CLS" command》这篇文章。
其实如果你装好了 JDK 和 VC++,直接按照文中所描述的办法就OK 了。我做了些许改动。先建立 CLS.java:
public class CLS {
static {
System.loadLibrary("cls");
}
public native static void CLS();
}
编译过后,执行 javah CLS
来获得 CLS.h 。接着同文件夹下建立 c.cpp :
#include
#include "CLS.h"
#include
JNIEXPORT void JNICALL Java_CLS_CLS(JNIEnv *, jclass){
system("cls");
}
好了,来执行个命令编译:
cl -IC:\j2sdk1.4.2\include -IC:\j2sdk1.4.2\include\win32 -LD c.cpp -cls.dll
这个 C:\j2sdk1.4.2
换成你的 JDK 安装目录。然后我们就拿到 CLS.class 和 cls.dll 了。
背后的血泪
我先是试了几张光碟,好在有没划坏的。重新装了一下 VC++,结果丫提示我安装没成功。我一看,还真是,环境变量没设置。更糟糕的是,我装的是 java 1.6,竟然没找到 JDK 目录,现从另外机器把一堆头文件拷贝过来的。接着把所有需要的头文件、库文件统统拷贝到 C:\Program Files\Microsoft Visual Studio\VC98\Bin 目录,把各文件中的 #include <.h> 都改成了 #include ".h" ,嘿嘿,虽然费劲,也编译成功了。
Linux 怎么办?
我记得,在 Ubuntu 终端里面,Ctrl+H 是清屏——不过是伪清屏,不过是把滚动条拉下来而已。
记得要编译成 cls.so。
不琢磨了,睡觉去。
Webmention
Comment Form
这个应该对你有帮助 http://blog.csdn.net/Jinuxwu/archive/2010/06/12/5666202.aspx
CLS.class 这个能不能看看源代码啊 我十分感谢啊?
这个,文中就有的啊
我在netbean里面以CLS.class和CLS.dll作为库添加进去,但是编译过不了。 然后在SRC或者class文件夹里面添加此两文件,编译还是过不了。
写个测试类自己编译下看看,应该没有问题。至于 netbean ,我也不熟。
都开始折腾 Java 了,太牛了你!!
汗,我可不敢称牛。这个清屏的问题几年前就被人解决了,我也是才学到
睡觉是王道哇!
太牛了你
ctrl+L 是清屏 clear 也是
恩,我记错了,是 Ctrl+L。不过 clear 和它一样,是伪清屏。