Problemas no servlet

8 respostas
RenatoLeme

sou novato no java j2ee
Estou com um problema no servlet…

http status 500.
javax.servlet.ServletException: Wrapper cannot find servlet class br.com.caelum.servlet.OiMundo or a class it depends on.

Geralmente este erro é quando vc esquece de colocar o nome da classe no mapeamento.
Só que isto eu fiz…

<?xml version="1.0" encoding="ISO-8859-1"?> Aplicacao web simples testeDeServlet br.com.teste.servlet.OiMundo testeDeServlet /oi
</web-app>

Tem algo de errado no mapeamento???

Obrigado pela atenção de todos

8 Respostas

PadrE

hmm…

vc reparou se ao iniciar o WebService aparece algo no Log ??? Se gluma estiver errada do seu XML ele vai reclamar logo na inicialização…

Pela descrição do erro… me parece ser algo errado na classe da servlet…

Vc fez o extends do HttpServlet ?? Sobreescreveu os métodos corretamente… essas coisas…

Fui !

gleise

Bom, então, o erro é a falta do br.com.caelum.servlet.OiMundo e no mapeamento está:

&lt;servlet-class&gt;br.com.teste.servlet.OiMundo&lt;/servlet-class&gt;

Você checou se os nomes estavam iguais ?

M

Na verdade se vc perceber o mapeamento ele fez corretamente entre o uri e o nome da classe, ele só nao ta achando aonde que a classe tá…
verifica se a classe tá com esse nome mesmo, se ela ta dentro da estrutura de pastas correta e se a toda a estrutura está dentro da pasta /WEB-INF/classes (se o pacote estiver correto o caminho da sua classe tem q ser esse: WEB-INF/classes/br/com/caelum/servlet/OiMundo.class)

RenatoLeme

Quando eu fiz meu projeto teste. eu abri
testeweb/web/WEB-INF/classes.

Depois eu so criei um folder(lib) no WEB-INF para colocar os jars.
o web.xml esta na WEB-INF

no projeto criei a o pacote e a classe no SRC .

O meu minuscolo teste esta assim

package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class OiMundo extends HttpServlet {
@Override

protected void service(HttpServletRequest request , HttpServletResponse response)throws ServletException , IOException {
	PrintWriter out = response.getWriter();
	out.println("<html>");
	out.println("<head>");
	out.println("<Minha primeira aplicacao servlet>");
	out.println("</head>");
	out.println("<body>");
	out.println("<ola mundo>");
	out.println("</body>");
	out.println("</html>");
	}

}

Tem algo de errado onde eu crie o pacote e a classe???

RenatoLeme

percebi que no nome do meu projeto o Eclipse me reclama de the serializable class OiMundo does not declare a static final serialVersionUID field of type long

tem alguma coisa a ver???

Sobre o mapeamento esta realmente igual…

Obrigado até então…

gleise

Não ví nada errado no seu mapeamento.
Na dúvida, criei uma aplicação com o código que você passou e ela rodou legal:

servlet:

package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OiMundo extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		out.println("&lt;html&gt;");
		out.println("&lt;head&gt;");
		out.println("&lt;title&gt;Minha primeira aplicacao servlet&lt;/title&gt;");
		out.println("&lt;/head&gt;");
		out.println("&lt;body&gt;");
		out.println("&lt;h1&gt;ola mundo&lt;/h1&gt;");
		out.println("&lt;/body&gt;");
		out.println("&lt;/html&gt;");
	}

}

web.xml:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt; &lt;display-name&gt; Teste&lt;/display-name&gt; &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt; &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt; &lt;welcome-file&gt;default.html&lt;/welcome-file&gt; &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt; &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;servlet&gt; &lt;servlet-name&gt;testeDeServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;br.com.caelum.servlet.OiMundo&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;testeDeServlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/oi&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;/web-app&gt;

Você tentou restartar o tomcat no server do eclipse e rodar novamente ?

RenatoLeme

Este projeto deve ter algo de errado na configuracao do proprio eclipse( tipo nas libraries), pois fiz do geito que vc fez e agora esta dando erro ( Http status 404 The requested resource (/testeweb/oi) is not availabe)
Geralmente este erro da quando o nome do pacote esta incorreto…
Conferi mais de 10 o nome do pacote…e o nome esta correto
O geito é comecar do 0 no eclipse, para ver se é problema da confguracao , pois o projeto realmente não tem nenhum erro…

Obrigado até então Gleise…
me desculpa pelo incomodo :wink:

LPJava

bom… eu tiver e o problema semelhante ontem… e agora me surgiu uma duvida… se eu colocar meu .class dentro de WEB-INF/classes eu preciso especificar no servlet :?: tipo:

<servlet> 
<servlet-name>testeCamilo</servlet-name> 
<servlet-class>classes.Camilo</servlet-class> 
</servlet>

mas minha classe nao tem package… o .java está em WEB-INF/src .

:?
eu fiz assim…

<servlet> 
<servlet-name>testeCamilo</servlet-name> 
<servlet-class>Camilo</servlet-class> 
</servlet>
Criado 20 de novembro de 2007
Ultima resposta 21 de nov. de 2007
Respostas 8
Participantes 5