Erro no JSP - HeardFirst Servlets&JSP

16 respostas
sammaraAdriana

Pessoal, fiz a aplicação do terceiro capítulo passo a passo, mas quando vou compilar meu cmd avisa que não encontrou as APIs(javax.servlet.;
javax.servlet.http.
; e java.io.*; ) que coloquei no import.

Alguém tem alguma idéia do que está acontecendo?

Obrigada

16 Respostas

esdras_63

certifique que as bibliotecas JavaEE e JavaSE estão no class path. Se está usando eclipse, clique com o botão direito do mouse no projeto, vá em build path e configure build path. Lá você clica em add library e seleciona as bibliotecas desejadas.

sammaraAdriana

Oi Esdras, eu estou usando notepad, pois o livro recomenda que não use uma ide, eu fiz o mesmo projeto no netbeans e funciona tudo ok, mas quando faço o passo a passo do cap 3 do livro não está funcionando.

paulo1911

Vc precisa dos jars do java ee. na linha de comando especifique o classpath do seu java home com o java ee.

Vc precisa do standard.jar e jstl.jar que esta dentro do “apache-tomcat-6.0.30\webapps\examples\WEB-INF\lib”

espero ter ajudado bons estudos!

sammaraAdriana

paulo1911:
Vc precisa dos jars do java ee. na linha de comando especifique o classpath do seu java home com o java ee.

Vc precisa do standard.jar e jstl.jar que esta dentro do “apache-tomcat-6.0.30\webapps\examples\WEB-INF\lib”

espero ter ajudado bons estudos!

Paulo, meu tomcat está em c:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.11 e estou usando para compilar:

javac -classpath \Program Files\Apache Software Foundation\Apache Tomcat 7.0.11\common\lib\servlet-api.jar;classes:. -d classes src\com\example\web\BeerSelect.java

Tenho que tirar os espaços do caminho do tomcat? Pois dá erro de flag se eu não tirar.
Quando tiro os espaços encontra 6 erros que são exatamente as APIs que não estão sendo encontradas.
Dentro do meu tomcat não tem esse common.

Obrigadão.

ironmarq

Bom dia sammaraAdriana, verifique no diretório em que descompactou o tomcat se existe o dir “common”, na versão 7 não tem mais este diretório, no tomcat 5 que é usado no livro tem, vc deve ter copiado o caminho mostrado no livro, porém está usando uma versão mais nova do tomcat que possui uma mudança em relação ao usado pelo livro.
Isso aqui deve resolver:

Uma dica: Ao usar o prompt do windows, tecle a letra inicial do nome do diretório depois TAB para encontrar o dir e ter a certeza que este existe mesmo.

Observação: Utilizei para verificação dos diretórios o apache-tomcat-7.0.23.

paulo1911

Olá, tente o seguinte:

javac -classpath “C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.11\common\lib\servlet-api.jar”;classes:. -d classes src\com\example\web\BeerSelect.java

outra alternativa é adicionar esse path na variavel de ambiente

Crie uma variavel de ambiente TOMCAT_HOME para a raiz de instalação do tomcat e na variavel PATH vc adiciona %TOMCAT_HOME%\common\lib

Espero ter ajudado
Bons estudos

ironmarq

paulo1911, estive analisando aqui o tomcat 7 o mesmo da nossa colega e nele não tem o diretório “common”, este diretório consta nas versões anteriores ao “7” e a pasta lib está na raiz do tomcat, creio eu que o problema seja esse, pois ele não encontrará o “servlet-api.jar” em " …Apache Tomcat 7.0.11\common\lib\servlet-api.jar " e sim em " …Apache Tomcat 7.0.11\lib\servlet-api.jar "…, o que acha ?

paulo1911

Sim exato, é soh ajustar o path até o jar. Tambem server para avariavel de ambiente citada anteriormente.

Ambas a formas vai funcionar.

Obrigado pela correção e pela dica! :smiley:

sammaraAdriana

Pessoal eu não tenho nem palavras para dizer como vocês são nota mil!

Eu fiz o seguinte:

Troquei para o tomcat 6.0 e digitei

javac -classpath “C:\Program Files\Apache Software Foundation\Tomcat 6.0
lib\servlet-api.jar”;classes;. -d classes src\com\example\web\BeerSelect.java

Funcionou tudo belezinha. Eu estava muito triste fazendo tudo direitinho e nada funcionando…

Valeu pessoal!

sammaraAdriana

Segui em frente no aplicativo, mas ocorreu outro erro. :cry:

1- O form já foi testado e está tudo ok;
2- O xml tb funcionando;
3- O Servlet ok;
4- (ERRO)JSP sem abrir;

vou colocar os dois e o erro:

Servlet:

package com.example.web;

import com.example.model.BeerExpert;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class BeerSelect extends HttpServlet{
	public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
		String c=request.getParameter("color");
		BeerExpert be=new BeerExpert();
		List<String> result=be.getBrands(c);
		
		//response.setContentType("text/html");
		//PrintWriter out=response.getWriter();
		//out.println("Beer Selection Advice<br>");
		
		request.setAttribute("styles",result);
		RequestDispatcher view=request.getRequestDispatcher("result.jsp");
		view.forward(request,response);
	}
}

JSP:

<%@page import="java.util.*" %>
<html>
<body>
	<h1 align="center">Beer Recommendations JSP</h1>
	<p>
	<%
		List<String> styles=(List)request.getAttribute("styles");
		Iterator it=styles.iterator();
		while(it.hasNext())
			out.print("Try: "+it.next());
	%>
</body>
</html>

Erro:

exception

org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:538)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.example.web.BeerSelect.doPost(BeerSelect.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

java.lang.IllegalStateException: No output folder
org.apache.jasper.JspCompilationContext.createOutputDir(JspCompilationContext.java:678)
org.apache.jasper.JspCompilationContext.getOutputDir(JspCompilationContext.java:197)
org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:514)
org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:453)
org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:399)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.example.web.BeerSelect.doPost(BeerSelect.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Se alguém puder me ajudar eu agradeceria muito, pois quero mesmo aprender...

Muito Obrigadão.

ironmarq
<blockquote>List styles=(List)request.getAttribute(“styles”);

Iterator it=styles.iterator();

</blockquote>

Tenta isso:
List<String> styles = ( List<String> ) request.getAttribute("styles");
Iterator<String> it = styles.iterator();

Obs: Usou o notepad pra escrever o “result.jsp”?, se sim, não esqueça de mudar a opção Salvar como tipo para “todos os tipos de arquivos”, pois se salvar como doc. de texto comum terá problemas.

sammaraAdriana

ironmarq:

Tenta isso:

List<String> styles = ( List<String> ) request.getAttribute("styles");
Iterator<String> it = styles.iterator();

Obs: Usou o notepad pra escrever o “result.jsp”?, se sim, não esqueça de mudar a opção Salvar como tipo para “todos os tipos de arquivos”, pois se salvar como doc. de texto comum terá problemas.

Fiz a primeira parte e deu beleza, mas quanto a salvar para “todos os tipos de arquivos” não deu certo. Eu salvei como jsp mesmo, pois no livro diz que tem que fazer isso.
Se você tiver mais alguma idéia, posta tá?
Mais uma vez, muito obrigada, iron.

ironmarq

Oi samara, o nome do arquivo vc coloca como “result.jsp” mesmo, abaixo do nome do arquivo tem uma opção chamada “Salvar como tipo” no notepad, nesse vc muda para “todos os tipos de arquivos”, mas se o container encontrou seu jsp, então tá tudo ok…

paulo1911

Vc criou a estrutura de diretorios da aplicação web corretamente?

SuaApp> WEB_INF > web.xml
|_seus.jsps |_classes
|_libs

Use o notepad ++ para praticar os exercicios.
Fica ai a dica.

sammaraAdriana

Eu estou usando o notepad++ e acho que fiz tudo certinho, mas vou começar do zero e depois retorno para dizer se deu certo ou não.

Valeu pessoal!

sammaraAdriana

Consegui!!! :smiley: :smiley: :smiley:

Meu tomcat estava instalado errado!

O caminho do Java estava errado!

Valeu pessoal!

Criado 7 de fevereiro de 2012
Ultima resposta 9 de fev. de 2012
Respostas 16
Participantes 4