Problema deploy tomcat servlets

5 respostas
ccarrara

Olá a todos. Procurei por problema parecido com o meu e não achei a solução…

Seguinte, estou tentando fazer o deploy de uma aplicação em uma máquina teste aqui, mas não está funcionando.

Quando tento acessar http://localhost:8080/first-web-study/teste dá HTTP Status 500.

Exception:
javax.servlet.ServletException: Wrapper cannot find servlet class java.com.FirstServlet or a class it depends on

Stack trace:

exception
javax.servlet.ServletException: Wrapper cannot find servlet class java.com.FirstServlet or a class it depends on
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	java.lang.Thread.run(Thread.java:595)

root cause
java.lang.ClassNotFoundException: java.com.FirstServlet
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1438)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	java.lang.Thread.run(Thread.java:595)

Estou usando uma task ant para a tarefa… Segue o web.xml e o build.xml que estou usando

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
	<servlet>
		<servlet-name>first</servlet-name>
		<servlet-class>java.com.FirstServlet</servlet-class>
	</servlet>

	<servlet-mapping>
        <servlet-name>first</servlet-name>
        <url-pattern>/teste</url-pattern>
    </servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>

<project name="first-web-study" basedir="." default="deploy">

	<property name="deployment.file.properties" value="${basedir}/deployment.properties"/>
	<property file="${deployment.file.properties}"/>
	<property name="deployment.home" value="${tomcat.home}/webapps/${context.root}"/>
	
	<property name="src" value="${basedir}/src"/>
	<property name="build" value="${basedir}/bin"/>
	<property name="lib" value="${basedir}/webapp/WEB-INF/lib"/>

	<!-- ================================= 
          target: clean              
         ================================= -->
    <target name="clean" description="Apaga resultado de um deploy">
        <delete dir="${deployment.home}"/>
    	<delete dir="${build}"/>
    </target>

	<!-- - - - - - - - - - - - - - - - - - 
          target: init                      
         - - - - - - - - - - - - - - - - - -->
    <target name="init" depends="clean">
		<mkdir dir="${deployment.home}"/>
		<mkdir dir="${build}"/>
    </target>

	<!-- ================================= 
          target: compile              
         ================================= -->
    <target name="compile" depends="init" description="Compila arquivos *.java e deixa os *.class na pasta bin">
        <javac srcdir="${src}" destdir="${build}">
        	<classpath>
        		<fileset dir="${lib}" includes="**/*.jar"/>
        	</classpath>
        </javac>
    </target>

	
	<!-- ================================= 
          target: deploy              
         ================================= -->
    <target name="deploy" depends="compile" description="Copia arquivos necessarios para tomcat/webapp">
        <copy todir="${deployment.home}">
        	<fileset dir="${basedir}/webapp" />
        </copy>
    	
    	<mkdir dir="${deployment.home}/WEB-INF/classes"/>
    	<copy todir="${deployment.home}/WEB-INF/classes">
    		<fileset dir="${build}" includes="**/*.class"/>
    	</copy>
    </target>

</project>

Alguém sabe qual é o problema ai?

Código da servlet

package java.com;

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 FirstServlet extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		PrintWriter out = resp.getWriter();

		out.println("<HTML>");
		out.println("<BODY>");
		out.println("<h1> TESTE</h1>");
		out.println("First exercise with servlets");
		out.println("</BODY>");
		out.println("</HTML>");
	}
}

Desde já obrigado!!

5 Respostas

ccarrara

Alguém? :frowning:

andreiribas

Provavelmente teu arquivo .class não está sendo jogado no diretório do tomcat.

Verifique no diretório webapps do tomcat se a sua aplicação está la, em WEB-INF/classes/java/com/FirstServlet.class

A propósito, por que não usar o Maven para fazer isso?

ccarrara

O .class está no local correto. Estou usando o Ant pra aprender.

De qualquer maneira, se alguém tiver mais alguma ideia…

FernandoFranzini

Seu Ant não esta criando o deploy com a classe servlet corretamente…
Aconselho vc a usar o deploy da sua IDE.

ccarrara

Obrigado pelas respostas…

Acabei solucionando o erro, só para deixar registrado, o problema estava no nome do meu pacote “java”. Parece que o nome “java” é reservado e acaba gerando esse tipo de erro. Mudei o nome do pacote e tudo se resolveu. Não precisei alterar minhas tasks.

Mais uma vez obrigado e fica a dica para quem tiver o mesmo problema. xD

Abraços!

Criado 31 de agosto de 2011
Ultima resposta 4 de set. de 2011
Respostas 5
Participantes 3