尝试将进度条添加到控制台

时间:2019-07-15 18:34:21

标签: java github intellij-idea console progress-bar

我尝试使用此存储库https://github.com/ctongfei/progressbar 为我的光线跟踪添加进度条。 运行测试时,我会遇到很多异常。

我绝对不知道它们的含义以及如何开始修复它们。

我的测试代码:

 ProgressBar pb = new ProgressBar("Test", 1000);
 int i = 0;
 while (i < 1000) {
      Thread.sleep(100);
      pb.step();
      i++;
 }

我收到的错误消息:

  

2019年7月15日晚上9:14:57 org.jline.utils.Log logr警告:无法执行   检索类型为dumb-color java.io.IOException的infocmp:无法运行   程序“ infocmp”:CreateProcess错误= 2,系统找不到   在指定的文件   java.base / java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)位于   java.base / java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)位于   org.jline.utils.InfoCmp.getInfoCmp(InfoCmp.java:547)在   org.jline.terminal.impl.AbstractTerminal.parseInfoCmp(AbstractTerminal.java:187)     在org.jline.terminal.impl.DumbTerminal。(DumbTerminal.java:88)     在   org.jline.terminal.TerminalBuilder.doBuild(TerminalBuilder.java:401)     在org.jline.terminal.TerminalBuilder.build(TerminalBuilder.java:259)     在   me.tongfei.progressbar.ProgressThread。(ProgressThread.java:56)     在me.tongfei.progressbar.ProgressBar。(ProgressBar.java:91)在   me.tongfei.progressbar.ProgressBar。(ProgressBar.java:35)在   main.Main.main(Main.java:70)原因:java.io.IOException:   CreateProcess错误= 2,系统找不到在以下位置指定的文件   java.base / java.lang.ProcessImpl.create(本机方法)位于   java.base / java.lang.ProcessImpl。(ProcessImpl.java:420)在   java.base / java.lang.ProcessImpl.start(ProcessImpl.java:151)位于   java.base / java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)     ...还有10个

     

测试99%│█████████████████████████▉│996/1000(0:01:40 / 0:00:00)   空

1 个答案:

答案 0 :(得分:2)

我已经为jline创建了拉取请求(请参见https://github.com/jline/jline3/pull/427

作为jline版本<3.12的解决方法,您可以使用以下代码(使用apache-commons中的IOUtils):

   static {
        InfoCmp.setDefaultInfoCmp("dumb-color", () -> {
            try {
                return new String(IOUtils.toByteArray(InfoCmp.class.getResourceAsStream("/org/jline/utils/dumb-colors.caps")));
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });
    }