Tentando fazer o kaptcha funcionar

9 respostas
D

Boa tarde amigos!

Estou tentando implementar um kaptcha simples em minha página utilizando o exemplo da revistar Mundo Java no. 33, mas estou tendo dificuldades...

Importei o kaptcha-2.3.jar e configurei minha página como segue:

<form method="post">
			   <img src="kaptcha.jpg" />
			   <input type="text" name="kaptcha" value="" />
			   <input type="submit" name="Ok">                
            </form>

O web.xml:

<servlet>
	   <servlet-name>Kaptcha</servlet-name>
	   <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
	   <servlet-name>Kaptcha</servlet-name>
	   <url-pattern>/kaptcha.jpg</url-pattern>
	</servlet-mapping>

Não aparece a imagem, e no console aparece o erro:

SEVERE: Servlet.service() for servlet Kaptcha threw exception
java.lang.NoSuchMethodError: com.jhlabs.image.RippleFilter.setXAmplitude(F)V
at com.google.code.kaptcha.impl.WaterRipple.getDistortedImage(WaterRipple.java:34)
at com.google.code.kaptcha.impl.DefaultKaptcha.createImage(DefaultKaptcha.java:44)
at com.google.code.kaptcha.servlet.KaptchaServlet.doGet(KaptchaServlet.java:84)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:416)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

Alguém pode ajudar????

9 Respostas

G
NoSuchMethodError: com.jhlabs.image.RippleFilter.setXAmplitude

Parece que você tem uma versão antiga do jar do captcha. O método setXAmplitude da classe com.jhlabs.image.RippleFilter não foi encontrado. Tente pegar uma versão mais nova.

D

Baixei a versão mais recente em http://code.google.com/p/kaptcha/downloads/list que é a versão 2.3

Importei para minha pasta lib e nada… O que mais pode ser??

D

No tutorial diz o seguinte:

Make sure to start your JDK with -Djava.awt.headless=true

Onde eu configuro??? Pode ser isso???

Y

Mas o erro continua igual?

D

O mesmo erro!

D

Mudei para a bibliotecat SimpleCaptcha…

<servlet> <servlet-name>StickyCaptcha</servlet-name> <servlet-class>nl.captcha.servlet.StickyCaptchaServlet</servlet-class> <init-param> <param-name>width</param-name> <param-value>250</param-value> </init-param> <init-param> <param-name>height</param-name> <param-value>75</param-value> </init-param> </servlet>

Não dá mais erros no console, mas também não mostra nada… meu jsp ficou assim:

<img src="/stickyImg" />

Alguém sabe o que pode ser??? A versão do simple captcha é: 1.1.1

Como que eu faço para chamar a imagem a partir de um servlet em um formulário jsp??

usando ??

Acho que é isso…

M

Manter a configuração mínima:

WinXP SP2
 Tomcat 6.0
 JDK 6
 kaptcha 2.3


Na Pagina JSP informar o caminho de sua pagina (url):

<table>
                <tr>
                    <td><img src="[b][color=red]<%= request.getContextPath() %>/[/color][/b]Kaptcha.jpg"></td>
                    <td valign="top">

	                    <form method="POST">
		                    <br>sec code:<input type="text" name="kaptchafield"><br />
		                    <input type="submit" name="submit">
	                    </form>
                    </td>
                </tr>	
	</table>

Na Web.xml deixar conforme documentacao:

Kaptcha
/Kaptcha.jpg

Instalar na sua lib filter.jar (que contem jhlabs atualizado)
baixar:
http://translate.googleusercontent.com/translate_c?hl=pt-BR&prev=/search%3Fq%3Djhlabs.jar%26hl%3Dpt-BR%26client%3Dubuntu%26channel%3Dfs%26prmd%3Dimvns&rurl=translate.google.com&sl=en&u=http://www.jhlabs.com/ip/filters/download.html&usg=ALkJrhgTwMxqOon4YaLxeFnAw1p1_Q9aEA

extrair e Instalar o [color=red]filters.jar[/color] em sua BuidPath.

=================================
Atenciosamente,

[b]Mauro Sérgio Leite Brenneisen[/b]
        Analista de Sistemas -

=================================

M

Ah esqueci de dizer que deve-se desintalar da biblioteca qualquer jcaptcha ou captchas já instalados anteriormente.

M

Biblioteca Kaptcha 2.3.2 http://code.google.com/p/kaptcha/wiki/HowToUse

Criado 28 de setembro de 2009
Ultima resposta 4 de nov. de 2011
Respostas 9
Participantes 4