Problemas con bean y tomcat

He hecho un bean y lo he compilado pero a la hora de que se ejecute en las páginas de jsp en el tomcat 4.1.x me da un error de que el tomcat no puede resolverlo. En el tomcat 3.3.1 me funciona perfectamente.
Yo he colocado el class en la carpeta /mi proyecto/Web-inf/classes/
¿Tengo qué hacer algo más? ¿Sabes por qué me da el siguiente error?
org. Apache. Jasper. JasperException: No se puede compilar la clase para JSP
An error occurred at line: 14 in the jsp file: /datos_usu.jsp
Generated servlet error:
[javac] Compiling 1 source file
C:\jakarta-tomcat-4.1.18\work\Standalone\localhost\SigritvConexionTomcat\datos_usu_jsp.java:70: cannot resolve symbol
symbol : class ConexionBean
location: class org.apache.jsp.datos_usu_jsp
ConexionBean conexionb = null;
^
An error occurred at line: 14 in the jsp file: /datos_usu.jsp
Generated servlet error:
C:\jakarta-tomcat-4.1.18\work\Standalone\localhost\SigritvConexionTomcat\datos_usu_jsp.java:72: cannot resolve symbol
symbol : class ConexionBean
location: class org.apache.jsp.datos_usu_jsp
conexionb = (ConexionBean) pageContext.getAttribute("conexionb", PageContext.SESSION_SCOPE);
^
An error occurred at line: 14 in the jsp file: /datos_usu.jsp
Generated servlet error:
C:\jakarta-tomcat-4.1.18\work\Standalone\localhost\SigritvConexionTomcat\datos_usu_jsp.java:75: cannot resolve symbol
symbol : class ConexionBean
location: class org.apache.jsp.datos_usu_jsp
conexionb = (ConexionBean) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "ConexionBean");
^
3 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:340)
At org. Apache. Jasper.compiler.Compiler.compile(Compiler.java:352)
At org. Apache. Jasper. JspCompilationContext.compile(JspCompilationContext.java:474)
At org. Apache. Jasper. Servlet. JspServletWrapper.service(JspServletWrapper.java:184)
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:260)
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:2415)
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:170)
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:223)
At org. Apache. Coyote.http11.Http11Processor.process(Http11Processor.java:432)
At org. Apache. Coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
At org. Apache. Tomcat. Util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
At org. Apache. Tomcat. Util. Threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
At java. Lang. Thread.run(Thread.java:536)
Respuesta
1
Pues tu problema tiene toda la pinta de un problema de configuración de Tomcat. ¿Has deshabilitado la 3.3.1? Por que ya sabes que no puedes tener corriendo 2 instancias de un contenedor de servlets.
También puede ser un problema de classpath pero yo que tú miraría bien la configuración del Tomcat.
Que tengo que mirar en la configuración del tomcat, cuales archivos. He puesto un ejemplo de los que vienen con tomcat en mi proyecto y tampoco funciona en cambio desde la página inicial de tomcat si funciona
Fíjate en el primer error que te da: no encuentra el Bean ConexionBean. ¿Has metido tu directorio de proyecto en el classpath? Si has hecho paquetes asegúrate de que la visibilidad es correcta, o en el jsp que hayas importado el paquete que contiene a ConexionBean.
Donde está ese classpath y que tiene que haber exactamente. No tengo ni idea y es urgente y eso de la visibilidad que es
El classpath es la ruta de clases que cargas para tus proyectos. Es una variable del SO, si abres una ventana ms-dos y tecleas set te aparecen todas las variables de entorno incluyendo el classpath. Pues bien, para que tu aplicación sea accedible a la máquina virtual debes incluir en el classpath bien el directorio raíz de tus clases/paquetes o bien el .jar donde se encuentran tus clases (siempre con la ruta absoluta).
La visibilidad de paquetes y clases es una característica propia de Java y de la programación orientada a objetos que indica qué clases son visibles a las otras mediante modificadores que pones en la definición de la clase.
De todas formas me parece un poco salvaje meterte con Tomcats y historias de esas sin conocer Java un poquito a fondo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas