Como carregar taglib no JSP?

6 respostas
R

Fala galera…
Tenho uma taglib e desejo carregá-la no JSP.
No meu arquivo JSP, colocque a seguinte diretiva:

<%@ taglib prefix=“blx” uri="/WEB-INF/blx.tld"%>

O Tomcat lança o seguinte erro:

org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: desisoft.jsp.tagext.SqlExecuteQueryTei

org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)

org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:411)

org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:283)

org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:422)

org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248)

org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:162)

org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)

org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)

org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539)

org.apache.jasper.compiler.Parser.parse(Parser.java:126)

org.apache.jasper.compiler.ParserController.doParse(ParserController.java:220)

org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)

org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)

org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.ClassNotFoundException: desisoft.jsp.tagext.SqlExecuteQueryTei

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)

org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:419)

org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248)

org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:162)

org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)

org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)

org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539)

org.apache.jasper.compiler.Parser.parse(Parser.java:126)

org.apache.jasper.compiler.ParserController.doParse(ParserController.java:220)

org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)

org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)

org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)

org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

[color=“red”]
O que pode ser?
Valew!
[/color]
[color=“red”][/color]

6 Respostas

E

Eu nao tenho muita esperiencia com tablibs, porque pocas vezes precisei fazer uma. Procuro utilizar as que estao disponiveis.

Mas pelo seu erro podem ser muitas coisas:

seu arquivo web.xml esta mal configurado.

seu arquivo blx.tld esta mal configurado.

um erro na implementacao da taglib. Uma classe nao pode ser instanciada, o que indica que o erro pode ser um dos outros que eu idiquei ou que voce esta esquecendo de chamar o construtor de algum atributo.

veja o erro:

java.lang.ClassNotFoundException: desisoft.jsp.tagext.SqlExecuteQueryTei

Como disse nao tenho muita esperiencia no assunto, mas quando vc conseguir resolve gostaria de saber como foi.

C

A classe desisoft.jsp.tagext.SqlExecuteQueryTei não está no classpath.

R

Mas neste caso, ha a necessidade de classpath?
Pois eu somente coloquei a taglib no diretorio WEB-INF e a invoquei na diretiva taglib da jsp…

C

Você colocou o que no WEB-INF?
O tld e as classes (jar)?
O tld pode ficar no WEB-INF mesmo, as classes em /WEB-INF/classes (este diretórios está no classpath da aplicação) e os jars em /WEB-INF/lib.

Corrijam me se eu estiver errado, mas toda aplicação java precisa de classpath.

maresp

Verifique o seguinte:

  • Arquivo .tld deve estar no classpath (dentro de /WEB-INF);
  • Se for o caso das classes da taglib estarem em um .jar ele deve estar em /WEB-INF/lib;
  • Seu web.xml deve conter o elemento <taglib> para cada taglib utilizada.
    Exemplo (jstl):
<taglib>
	<taglib-uri>http://jakarta.apache.org/taglibs/{library}</taglib-uri>
	<taglib-location>/WEB-INF/{library}.tld</taglib-location>
</taglib>
R

Entao galera…
Fiz o que vcs falaram…
Coloquei minha taglib no diretorio /WEB-INF e defini um arquivo XML com aquelas JSTL…E continua dando o mesmo erro…Sera que a tld (que eu peguei de um site) pode estar errada?? Na verdade, acho que nao preciso definir um Classpath, pois na hora de fazer o deply o Tomcat copia a pasta /WEB-INF para seu diretorio ROOT padrao. Mas o erro ainda continua…Vcs atem alguma sugestao??

Abracos…

Criado 3 de setembro de 2004
Ultima resposta 15 de set. de 2004
Respostas 6
Participantes 4