cmd调用java程序,在cmd控制台打印出彩色文字


cmd调用java程序,在cmd控制台打印出彩色文字


以下仅为本人工作、学习过程中所接触到的内容,不足之处请多包涵。
测试环境:win7专业版的DOS

使用cmd调用java程序时,在cmd控制台打印出来的效果默认都是黑底白字,打印出来的报错信息也没有特殊标注,不易观察,所以希望能够控制cmd控制台的打印效果,对不同提示信息具有不同的颜色表示,这样也利于观察分析。
在网上也查了很多资料,大部分说的都是如何在eclipse控制台、IDEA控制台打印出彩色字体,有些说是可以在cmd控制台显示出彩色字体,但在本人测试环境上仍然没有效果。经过多次尝试,最终还是找到了一种有效的解决方法。

注:该测试使用记事本编辑测试代码,使用cmd编译、运行代码。

工具准备

下载工具jansi-xxx.jar,自行下载版本,测试使用版本为1.11。点我下载

编写测试代码

import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.Ansi.Color;
import org.fusesource.jansi.AnsiConsole;
class ColorTest{
	public static void main(String[] args){
		
        //System.out.println( Ansi.ansi().eraseScreen().fg(Ansi.Color.RED).a("Hello").fg(Ansi.Color.GREEN).a(" World").reset() );
		AnsiConsole.systemInstall();
		System.out.println("hello world!");
		System.out.println( Ansi.ansi().fg(Ansi.Color.RED).a("Hello").fg(Ansi.Color.GREEN).a(" World").reset() );
		System.out.println(Ansi.ansi().render("@|red Hello|@ @|green World|@").reset());
		AnsiConsole.out.println( Ansi.ansi().fg(Ansi.Color.RED).a("Hello World").reset() );
        AnsiConsole.out.println("Hello World");
		System.out.println("\u001B[32mColor \u001B[0m");
		AnsiConsole.systemUninstall();
		//System.out.println(Ansi.ansi().eraseScreen().render("@|red Hello|@ @|green World|@")); 
		
	}
}

注意
带有颜色的输出应包含在AnsiConsole.systemInstall();与AnsiConsole.systemUninstall();之间,否则会出现乱码,如下图
pic

测试结果

pic

其他说明

代码需要引用外部jar包,关于引用外部jar报的代码如何使用cmd进行编译、运行可参考:cmd控制台使用命令行编译、执行依赖其他jar包的java代码

参考

posted @ 2020-03-03 22:32  海*风  阅读(2175)  评论(0编辑  收藏  举报