Как использовать jcurses из Groovy

Я просто пытался использовать JCurses из Groovy, но всегда получаю следующее исключение:

Caused by: java.lang.NullPointerException at    
    jcurses.system.Toolkit.getLibraryPath(Toolkit.java:97) at 
    jcurses.system.Toolkit.<clinit>(Toolkit.java:37)

Toolkit.java:37:

    String url = ClassLoader.getSystemClassLoader()\
            .getResource("jcurses/system/Toolkit.class").toString();

Google сказал мне, что это может быть связано с пробелами внутри classpath (windows), но перемещение библиотеки и даже использование классов вместо файла.jar не увенчалось успехом.

Похоже, что это возможно - обращайтесь за отличными ссылками JCurses: http://pleac.sourceforge.net/pleac_groovy/userinterfaces.html

Другой способ очистки экрана из скрипта Groovy также решил бы мою проблему.:-)

3 ответа

Решение

Поскольку jline входит в состав Groovy, вы не можете использовать класс jline.ANSIBuffer.ANSICodes (как показано на странице, на которую вы ссылаетесь)

print jline.ANSIBuffer.ANSICodes.clrscr()

Вам также может понадобиться сделать:

print jline.ANSIBuffer.ANSICodes.gotoxy( 1, 1 )

Если вы хотите, чтобы курсор вернулся в верхнюю часть экрана

Чтобы нарисовать цветной текст, вы можете сделать:

println new jline.ANSIBuffer().append( 'Some ' )
                              .red( 'Red' )
                              .append( ' text' )
                              .toString()

Коренная проблема, скорее всего, в том, что jcurses.jar не был найден на вашем пути к классу, в результате чего ClassLoader.getSystemClassLoader().getResource("jcurses/system/Toolkit.class") возвращать null,

Есть связанная проблема, с которой вы можете столкнуться, если не можете найти библиотеку C, содержащую нативный код (libjcurses.so или же libjcurses64.so на Linux). Ожидается, что библиотека C находится в той же папке, где она была найдена jcurses.jar, Если его там нет, вы получите:

java.lang.RuntimeException: не удалось найти библиотеку jcurses

Нашел другой тривиальный способ очистки экрана:-)

print "\n"*80
Другие вопросы по тегам