Eclipse + Tomcat + JSP - Testes Basicos

9 respostas
G

Pessoal,

Estou estudando a apostila FJ-21 da Caelum e estou com dificuldades sobre JSP chamando classes...

Criei uma classe de teste, MostrarMsg:

package br.caelum.jdbc;

public class MostrarMsg {

	void mostrar(){
		System.out.println("Mensagem");
	}
	
}
e a seguinte JSP:
<%@ page import="java.util.*,br.caelum.jdbc.*" %>

<html>
<%
MostrarMsg msg = new MostrarMsg();
msg.mostrar();
%>

</html>

E tenho o seguinte erro no console do eclipse....

14/04/2008 13:23:24 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 6 in the jsp file: /lista.jsp
MostrarMsg cannot be resolved to a type
3:
4:
5: <%
6: MostrarMsg msg = new MostrarMsg();
7: msg.mostrar();
8: %>
9:

An error occurred at line: 6 in the jsp file: /lista.jsp
MostrarMsg cannot be resolved to a type
3:
4:
5: <%
6: MostrarMsg msg = new MostrarMsg();
7: msg.mostrar();
8: %>
9:

Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

Alguem sabe o q seria????
O Tom cat esta no ar!

9 Respostas

Andre_Fonseca

Os arquivos .class estão dentro de WEB-INF/classes ??

G

André Fonseca ,

Deletei meu projeto e criei novamente...
Agora apresento-lhe um novo e classico erro, pelo que busquei no forum...

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 8 in the jsp file: /mostramsg.jsp
MostraMsg cannot be resolved to a type
5: <html>
6: 
7: <%
8: MostraMsg mmsg = new MostraMsg();
9: mmsg.mostra();
10: %>
11: 


An error occurred at line: 8 in the jsp file: /mostramsg.jsp
MostraMsg cannot be resolved to a type
5: <html>
6: 
7: <%
8: MostraMsg mmsg = new MostraMsg();
9: mmsg.mostra();
10: %>
11: 


Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Minha Pagina
<%@ page
import="java.util.*,br.teste.*" %>

<html>

<%
MostraMsg mmsg = new MostraMsg();
mmsg.mostra();
%>


</html>
Meu programa
package br.teste;

public class MostrarMsg {

	public void mostra() {
		System.out.println("Mensagem");
	}
	
}

Minha Pagina
Projects\jspteste\web\mostramsg.jsp

Meus .class
Projects\jspteste\web\WEB-INF\classes\br\teste

Andre_Fonseca

Você fez o import errado, além disso deve declarar o método mostrar como public

A sua página .jsp fica assim

<%@ page import="java.util.*,br.caelum.jdbc.*" %>  

<html>  

<%  
MostrarMsg mmsg = new MostrarMsg();  
mmsg.mostrar();
%>  


</html>
G

O método já esta como public e o importa esta certo!!!

Ja meu post anterior… onde eu deletei o projeto e criei outro!

Andre_Fonseca

O Tomcat não consegue gerar o .class para a classe que você criou, as configurações das variáveis de ambiente JAVA_HOME, PATH e CLASSPATH estão corretas?? http://www.guj.com.br/java.tutorial.artigo.108.1.guj

Se você declarou o método como public, o import está correto, as classes estão sendo compiladas em WEB-INF/classes tente ver se as variáveis de ambiente estão OK. Para fazer um teste tente compilar o .java dentro do diretório classes usando prompt de comando do DOS, se não funcionar é porque as variáveis de ambiente não estão configuradas corretas…

[]´s

G

Entao…

A minha classe de teste, MostrarMsg, esta sendo gerada em Projects\jspteste\web\WEB-INF\classes\br\teste
o .class!

Agora fuçando um pouco mais… reparei a a pagina JSP… o .class dela nao esta sendo gerado quando utilizo uma classe externa, como a MostrarMsg.

Veja os diretorios!

[img]


Andre_Fonseca

Como eu falei, o arquivo MostrarMsg.class deve ser compilado em web/WEB-INF/classes

Para fazer isso você deve ir em Build Path do Projeto, Source, em Default Output Folder alterar para jspTeste/web/WEB-INF/classes

Para acessar depois a sua pagina de testes vá em http://localhost:8080/jspTeste/mostramsg.jsp

Em anexo um print de como deve ficar a sua estrutura de arquivos - utilize a visão Navigator para isso

[]´s


G

Tome cuidado com o nome da tua classe.
No JSP tu está chamando MostraMgm, mas o nome da classe é MostrarMgm!!

Quem sabe resolva!

G

Para mim ao menos funcionou!
Eu estava com um problema parecido, e depois de dar uma olhada neste tópico, consegui rodar!

Boa sorte!!

Criado 14 de abril de 2008
Ultima resposta 25 de abr. de 2008
Respostas 9
Participantes 3