Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Не запускается Simplecaptcha


Автор: KaD 21.1.2008, 16:49
Всем привет
Скачал себе Simplecaptcha. При запуске tomcat с терминала на тестовой странице не отображает картинку и выдает вот такую ошибку

java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(Unknown Source)
    nl.captcha.text.imp.DefaultWordRenderer.renderWord(Unknown Source)
    nl.captcha.servlet.DefaultCaptchaIml.createImage(Unknown Source)
    nl.captcha.servlet.CaptchaServlet.doGet(Unknown Source)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Нашел в доках, что надо поставить опциях java -Djava.awt.headless=true
Прописав в переменных окружения 
JAVA_OPTS="-Djava.awt.headless=true"
export JAVA_OPTS
Появилась следующая ошибка (тоже самое только без первой строки)

java.awt.HeadlessException
    sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(Unknown Source)
    nl.captcha.text.imp.DefaultWordRenderer.renderWord(Unknown Source)
    nl.captcha.servlet.DefaultCaptchaIml.createImage(Unknown Source)
    nl.captcha.servlet.CaptchaServlet.doGet(Unknown Source)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

если запускать tomcat из под винды или из под иксов тогда все работает без проблем.
Полазил по нету нашел что можно запускать используя Xvfb. Но как с ним обращатся ни как въехать не могу. 
Кто знает, что надо еще прописать, чтобы этот код мог работать в случаях когда tomcat запускается не из под иксов?

Вот url от куда качал http://simplecaptcha.sourceforge.net/

Автор: tux 21.1.2008, 18:55
http://forum.vingrad.ru/index.php?showtopic=49035&view=findpost&p=384539

Автор: KaD 22.1.2008, 12:51
Разобрался. 
На сколько я понял вся идея с перенаправлением на виртуальный дисплей, когда не запущены иксы.
Кому интересно, делал так:
Запускаю в одном терминале  
Код

Xvfb :1 -screen 0 800x600x8 

(где 1 как я понял id виртуального дисплея)
Во втором терминале проверил процесс Xvfb, присутствует. 
Выставляю переменную окружения 
Код

export DISPLAY=:1

и затем выполняю запуск tomcat.
После проведенных действий все заработало. Потом это все заворачивается в скрипт и в автозапуск.

Автор: ochnev 9.2.2008, 19:35
Вот решение получше: http://javaboutique.internet.com/tutorials/captcha/index-2.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)