Dúvida iniciante em struts

4 respostas
R

Pessoal, sou iniciante em struts e não consigo fazer minha primeira aplicação rodar de jeito nenhum. Estou usando o struts 1.9, eclipse 3.2, Tomcat 4.1 e jvm e jsdk 1.4. Assim que eu tentei rodar meu index jsp, que encaminha para outra página de cadastro, apareceu o seguinte erro:

HTTP Status 500 - 
 
 --------------------------------------------------------------------------------
 
 type Exception report
 
 message 
 
 description The server encountered an internal error () that prevented it from fulfilling this request.
 
 exception 
 
 org.apache.jasper.JasperException
 	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:207)
 	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
 	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 	at java.lang.Thread.run(Thread.java:534)
 
 
 root cause 
 
 java.lang.NullPointerException
 	at org.apache.struts.taglib.TagUtils.pageURL(TagUtils.java:1070)
 	at org.apache.struts.taglib.TagUtils.computeURLWithCharEncoding(TagUtils.java:449)
 	at org.apache.struts.taglib.TagUtils.computeURLWithCharEncoding(TagUtils.java:311)
 	at org.apache.struts.taglib.html.LinkTag.calculateURL(LinkTag.java:463)
 	at org.apache.struts.taglib.html.LinkTag.doStartTag(LinkTag.java:341)
 	at org.apache.jsp.index_jsp._jspx_meth_html_link_0(index_jsp.java:132)
 	at org.apache.jsp.index_jsp._jspx_meth_html_html_0(index_jsp.java:94)
 	at org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
 	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:162)
 	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
 	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
 	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
 	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 	at java.lang.Thread.run(Thread.java:534)
 
 
 
 --------------------------------------------------------------------------------
 
 Apache Tomcat/4.1.31

Meu index.jsp é este:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib uri="/tags/struts-bean.tld" prefix="bean" %>
 <%@ taglib uri="/tags/struts-html.tld" prefix="html" %>
 
 <html:html xhtml="true">
 <head>
 	<title>Stock Management</title>
 	<html:base/>
 </head>
 <body>
 	<div align="center">
 		<html:link page="/CustomerForm.jsp"> Go to customer Form </html:link>
 	</div>
 </body>
 </html:html>

Meu web.xml tá assim:

<?xml version="1.0" encoding="ISO-8859-1"?>
 
 <!DOCTYPE web-app
   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
   "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
 
 <web-app>
   <display-name>Hello World Struts Application</display-name>
   
   <!-- Standard Action Servlet Configuration (with debugging) -->
   <servlet>
     <servlet-name>action</servlet-name>
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
     <init-param>
       <param-name>config</param-name>
       <param-value>/WEB-INF/struts-config.xml</param-value>
     </init-param>
     <init-param>
       <param-name>debug</param-name>
       <param-value>3</param-value>
     </init-param>
     <init-param>
       <param-name>detail</param-name>
       <param-value>3</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
   </servlet>
 
 
   <!-- Standard Action Servlet Mapping -->
   <servlet-mapping>
     <servlet-name>action</servlet-name>
     <url-pattern>*.do</url-pattern>
   </servlet-mapping>
 
 
   <!-- The Usual Welcome File List -->
   <welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
 
 
   <!-- Struts Tag Library Descriptors -->
   <taglib>
     <taglib-uri>/tags/struts-bean.tld</taglib-uri>
     <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
   </taglib>
 
   <taglib>
     <taglib-uri>/tags/struts-html.tld</taglib-uri>
     <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
   </taglib>
 
 
 </web-app>

Por favor, alguém poderia me indicar onde está o erro? Toda vez que tento usar uma tag do struts ou um bean:message dá em erro de NullPointer…

4 Respostas

O

O problema pode ser na sua descrição do Struts.
Tenta assim:

<taglib>
  <taglib-uri>struts-bean</taglib-uri>
  <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
  <taglib-uri>struts-html</taglib-uri>
  <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
R

Tentei, mas não funcionou. Ele reconhece as tlds, mas na hora que eu vou usá-las é que aparece o problema. Se eu não usar nenhuma, apenas “declarar o import” no início do código, não dá problema nenhum. Acho que se ele não reconhecesse as tlds, apareceria um erro de que as tlds não foram achadas, mas não é esse o problema, ele acha as tlds, mas quando tento usá-las dá o erro…

O

Faça o seguinte:

Pegue os “jar” do Struts e coloque dentro do diretório shared\lib do seu tomcat.
Feito isso, vá no seu projeto, no Eclipse, e clique com o botão direito e vá em propriedades. Vá em “java build path”, na paleta “libraries” clique em “add library” e marque “user library” e selecione “tomcat api” e “tomcat shared library”.

Assim seu projeto vai encontrar os arquivos “jar”.

R

Não achei o Tomcat api nem o Tomcat shared library? Onde está tentei adicionar, mas não deu certo, coloquei apenas os jar do struts na shared/lib do Tomcat, mas pelo Eclipse não consegui adicionar

Criado 22 de agosto de 2006
Ultima resposta 24 de ago. de 2006
Respostas 4
Participantes 2