Pessoal,
Estou estudando a apostila FJ-21 da Caelum e estou com dificuldades sobre JSP chamando classes…
Criei uma classe de teste, MostrarMsg:
[code]package br.caelum.jdbc;
public class MostrarMsg {
void mostrar(){
System.out.println("Mensagem");
}
}[/code]
e a seguinte JSP:
[code]<%@ page import=“java.util.,br.caelum.jdbc.” %>
<%
MostrarMsg msg = new MostrarMsg();
msg.mostrar();
%>
[/code]
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!
Os arquivos .class estão dentro de WEB-INF/classes ??
André Fonseca ,
Deletei meu projeto e criei novamente…
Agora apresento-lhe um novo e classico erro, pelo que busquei no forum…
[code]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:
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:
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.
[/code]
Minha Pagina
[code]<%@ page
import=“java.util.,br.teste.” %>
<%
MostraMsg mmsg = new MostraMsg();
mmsg.mostra();
%>
[/code]
Meu programa
[code]package br.teste;
public class MostrarMsg {
public void mostra() {
System.out.println("Mensagem");
}
}[/code]
Minha Pagina
Projects\jspteste\web\mostramsg.jsp
Meus .class
Projects\jspteste\web\WEB-INF\classes\br\teste
Você fez o import errado, além disso deve declarar o método mostrar como public
A sua página .jsp fica assim
[code]<%@ page import=“java.util.,br.caelum.jdbc.” %>
<%
MostrarMsg mmsg = new MostrarMsg();
mmsg.mostrar();
%>
[/code]
O método já esta como public e o importa esta certo!!!
Ja meu post anterior… onde eu deletei o projeto e criei outro!
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
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]
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
Tome cuidado com o nome da tua classe.
No JSP tu está chamando MostraMgm, mas o nome da classe é MostrarMgm!!
Quem sabe resolva!
Para mim ao menos funcionou!
Eu estava com um problema parecido, e depois de dar uma olhada neste tópico, consegui rodar!
Boa sorte!!