Как использовать jcurses из Groovy - PullRequest
1 голос
/ 28 марта 2012

Я только что попытался использовать 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 ]

2 голосов
/ 30 августа 2012

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

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

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

2 голосов
/ 28 марта 2012

Поскольку 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()
1 голос
/ 28 марта 2012

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

print "\n"*80
...