Não consigo fazer funcionar um aplicativo que usa bean

22 respostas
M

Estou tentando implementar um exemplo de uma apostila de JSP… criei dentro de webapps/root/aplic a pasta locadora com os arquivos html e jsp e coloquei os arquivos .java e .class dentro da pasta webapps/WEB-INF/classes/beans, mas quando executo o script recebo uma mensagem de erro monstruosa:

[size=9][color=blue]type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

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

An error occurred at line: 1 in the jsp file: /aplic/jsp/locadora/ProcessarMidia.jsp

Generated servlet error:

[javac] Compiling 1 source file

C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:7: package beans does not exist

import beans.BeanMidia;

^

C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:43: package beans does not exist

beans.BeanMidia midia = null;

^

An error occurred at line: 1 in the jsp file: /aplic/jsp/locadora/ProcessarMidia.jsp

Generated servlet error:

C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:45: package beans does not exist

midia = (beans.BeanMidia) pageContext.getAttribute(midia, PageContext.REQUEST_SCOPE);

^

An error occurred at line: 1 in the jsp file: /aplic/jsp/locadora/ProcessarMidia.jsp

Generated servlet error:

C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:48: package beans does not exist

midia = (beans.BeanMidia) java.beans.Beans.instantiate(this.getClass().getClassLoader(), beans.BeanMidia);

^

4 errors

at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)

at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)

at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)

at java.lang.Thread.run(Thread.java:534)[/color][/size]

O que pode estar acontecendo???

Mary

22 Respostas

cv1

Traduzindo a mensagem do compilador: “o pacote ‘beans’ nao existe”. Ja tentou olhar os caminhos, jars e classes da sua aplicacao web?

M

Sim, já olhei, é uma aplicação muito simples que só usa um arquivo .java.
e é exatamente essa a disposição dos arquivos:
[color=red]webapps/root/aplic/jsp/locadora/ [arquivos htm e jsp]
webapps/root/aplic/WEB-INF/classes/locadora/ [arquivo .java e .class][/color]Será que essa hierarquia de pastas está correta?

M

Acabei de olhar tbem o arquivo tools.jar, já existe uma copia dele no diretório common/lib do TomCat… :cry:

cv1

Se voce estava esperando um pacote chamado ‘beans’, entao ele nao esta na sua hierarquia, pelo que voce apontou. Quais sao os “nomes completos” dos seus beans?

Diogenes

Se seu BeanMidia.class está no diretório WEB-INF/classes/locadora então, na sua .jsp, vc deverá dar import em locadora.BeanMidia, e não beans.BeanMidia…

M

Mas Diógenes,
O nome do pacote é beans…
No arquivo .java, a primeira linha diz:
package beans;
Eu entendi que o “beans.BeanMidia” indicasse que BeanMidia pertencesse ao pacote beans…
Então o nome da pasta tem que ser igual ao nome do pacote???
[]'s
Mary

M

Diogenes,
Modifiquei o nome da pasta e o erro persistiu… tem alguma idéia se a hierarquia das pastas está com problema???
Obrigada :slight_smile:

Mary

Diogenes

mary_molina:
Eu entendi que o “beans.BeanMidia” indicasse que BeanMidia pertencesse ao pacote beans…
Então o nome da pasta tem que ser igual ao nome do pacote???

Vc está certa…qdo vc faz um import de beans.BeanMidia em outras palavras vc está falando q a classe BeanMidia pertence ao pacote beans…

E sim, o nome do diretorio deve ser o mesmo do pacote de sua classe…

Vc teria algo como:

WEB-INF/
    /classes
          /beans/BeanMidia.class

Onde está seu .class???
Como vc está compilando a classe???

M

Oi,
Meus arquivos estão dispostos dessa forma:
[color=red]webapps/root/aplic/jsp/locadora/ [arquivos htm e jsp]
webapps/root/aplic/WEB-INF/classes/locadora/ [arquivo .java e .class][/color]
Você quer saber como estou compilando o arquivo .java? Estou usando o netBeans, mas já entei através do javac e nada… :cry:

Diogenes

Mude a declaração do package na classe BeanMidia para:

package locadora;
...

…e restarte o Tomcat…

M

Vou tentar… :slight_smile:
Obrigada
[]'s
Mary

M

Não deu certo, os erros persistem… rs… eu é que estou desistindo… rs…

[size=9][color=red]HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

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

An error occurred at line: 1 in the jsp file: /aplic/jsp/locadora/ProcessarMidia.jsp

Generated servlet error:
[javac] Compiling 1 source file

C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:7: package locadora does not exist

import locadora.BeanMidia;

^

C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:43: package locadora does not exist

locadora.BeanMidia midia = null;

^

An error occurred at line: 1 in the jsp file: /aplic/jsp/locadora/ProcessarMidia.jsp

Generated servlet error:
C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:45: package locadora does not exist
midia = (locadora.BeanMidia) pageContext.getAttribute(“midia”, PageContext.REQUEST_SCOPE);
^
An error occurred at line: 1 in the jsp file: /aplic/jsp/locadora/ProcessarMidia.jsp

Generated servlet error:
C:\Tomcat 4.1\work\Standalone\localhost_\aplic\jsp\locadora\ProcessarMidia_jsp.java:48: package locadora does not exist
midia = (locadora.BeanMidia) java.beans.Beans.instantiate(this.getClass().getClassLoader(), “locadora.BeanMidia”);
^
4 errors

at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)[/color][/size]

Dá vontade de colocar a culpa no tutorial, pois já tirei erros que não poderiam existir, mas já testei com um aplicativo ainda mais simples e nada… :cry:

rodrigo_gomes

Olá,

tente colocar seu diretorio WEB-INF em root

webapps/root/WEB-INF

Abraços

Diogenes

Mary,

Vc tem o arquivo BeanMidia.class no seu diretório WEB-INF/locadora?
Restartou o tomcat?

M

Sim, tenho todos os arquivos necessários… acho que estou mesmo com problemas em meu servidor…

cv1

Voce pode dar mais detalhes sobre o que esta acontecendo?

M

Estou tentando desenvolver uma aplicação muito simples com jsp usando um bean, mas não consigo fazer com que o aplicativo funcione. Já postei neste fórum o erro que é retornado.
Tentei rodar um dos exemplos que vem com a instalação do Tomcat, mas se ele é colocado na minha pasta de aplicações, tbem não roda. Talvez o código já venha compilado na instalação, por isso os exemplos funcionem corretamente, enquanto que as aplicações não… vc pode me ajudar? Existe algum arquivo .jar que tenho que copiar para algum diretório especial?
[]'s
Mary

cv1

Vamos la… vou tentar fazer um passo-a-passo. Com certeza vai ter alguma coisa que eu esqueci, entao por favor me corrijam!

  • Crie uma nova pasta em TOMCAT/webapps chamada, sei la, nomedaminhaaplicacao.

  • Crie uma pasta dentro de nomedaminhaaplicacao chamada WEB-INF, e outra dentro dessa chamada classes.

  • Coloque as classes dos seus beans nessa pasta, lembrando de manter a estrutura de diretorios dos pacotes (se o seu bean se chama com.thoughtworks.Bean, deve existir o arquivo TOMCAT/webapps/nomedaminhaaplicacao/WEB-INF/classes/com/thoughtworks/Bean.class)

  • Coloque os JSPs dentro da pasta principal, nomedaminhaaplicacao.

  • Verifique as configuracoes do server.xml (a documentacao do Tomcat vai te ajudar a entender o que tem ali)

  • Acesse o JSP no browser, e veja o que acontece :wink:

M

Estou colocando as aplicações dentro de webapps/root/aplic/nome da aplicação.
Existe algum problema em eu estar usando a pasta root? (tentei colocar uma aplicação fora dela e não funcionou)
Com essa hierarquia de pasta, onde exatamente deve estar meu diretório WEB_INF?

M

Modifiquei as pastas como vc disse. Olha como ficou agora:
[color=blue]webapps/apliclocadora/WEB-INF/classes/locadora
- BeanMidia.class
- BeanMidia.java[/color]
E na pasta
[color=blue]webapps/apliclocadora, estão os arquivos
- CadastroMidia.htm
- ProcessarMidia.jsp
- Sucesso.jsp
- RetryMidia.jsp[/color]

É isso mesmo???

cv1

Sim, isso mesmo. Funcionou? Deu uma olhada no server.xml e na documentacao do Tomcat?

M

Por enquanto não deu certo…
O que especificamente tenho que olhar no server.xml?

Criado 1 de fevereiro de 2005
Ultima resposta 2 de fev. de 2005
Respostas 22
Participantes 4