Problemas con bean y tomcat

Hola he hecho un bean y lo he compilado pero a la hora de que se ejecute en las páginas de jsp me da un error de que el tomcat no puede resolverlo.
Yo he colocado el class en la carpeta /mi proyecto/Web-inf/classes/
Tengo que hacer algo más? Sabes porque 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
Creo que no te está encontrando la clase. ¿Cómo importas el bean? ¿Tienes alguna sentencia import en tu página? ¿me puedes enviar la jsp datos_usu.jsp?
Salu2,
N.
Aquí te envío el código de datos_usu:
<%@ page contentType="text/html;charset=iso-8859-1" import="java.sql.*, javax.servlet.http.*, java.util.*"%>
<%
<jsp:useBean id="conexionb" scope="session" class="ConexionBean">
</jsp:useBean>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Oracle JDeveloper">
<title>sigritv</title>
</head>
<body>
<p>
<%
//Variables usuario y clave pasadas desde la pagina del formulario conexion_inc.jsp
String usuario = request.getParameter("usuario");
String clave = request.getParameter("clave");
//Recogemos los parametros de maquina, puerto y nombre de la base de datos del fichero properties
String strMaquina = "";
String strPuerto = "";
String strBD = "";
//Instanciamos el objeto ResourceBundle y le indicamos cual es el fichero properties
ResourceBundle bun;
bun = ResourceBundle.getBundle("sigritv");
strMaquina = bun.getString("nombreMaquina");
strPuerto = bun.getString("puerto");
strBD = bun.getString("nombreBD");
//Creación de la conexion. Si falla muestra el error de oracle
Connection conn = null;
if (conn==null)
{
conexionb.setConexion(strMaquina,strPuerto,strBD,usuario,clave);
}
if(conexionb.getConexion()==null){
out.println("<font size=4>El usuario indicado no es válido</font>");
}
else{
%>
<%@include file="menu_principal.jsp"%>
<%
}
%>
</body>
</html>
¿El bean ConexionBean está dentro de un package?
Salu2,
N.
no, ademas lo he utilizado bajo una aplicación que va con jrun y si funciona
¿Has verificado el classpath? Envíamelo...
Salu2.
Hola otra vez, he conseguido que el bean me funcione en el tomcat 3.3.1 pero lo necesito para el tomcat 4.1.x y ahí no me funciona. Respecto al classpath a cual te refieres?
Gracias
El classpath al que me refiero es el que utiliza tomcat o el de tu aplicación.
También es posible que te falte el paquete java. Beans. Mira si el classpath del tomcat 4.1.x contiene los jars básicos del sistema (mira a ver si tienes el que contiene todo el framework de los beans).
Salu2
N.
donde miro el classpath de tomcat, no tengo ni idea ¿server.xml,web.xml hay que modificar algo ahí?
En el archivo por lotes que arranca TomCat.
no veo nada en ese archivo de lo que me dices, que tiene que haber? no tengo ni idea y es urgente. GRACIAS
Vamos a probar una cosa (es algo salvaje... pero es lo q se me ocurre).
Busca el archivo "activation.jar" y copialo en el directorio donde está tu jdk. Debes copiarlo en : tuJdk/jre/lib/ext
Y reaarranca el tomcat.
Salu2
He hecho eso y sigue igual.
Te mando el bean y la página jsp, así como el error que me da por si tú quieres probarlo o mirarlo
Bean: Prueba.java
/*
* Prueba.java
*
* Created on 22 de enero de 2003, 8:56
*/
import java.beans.*;
import java.sql.*;
import javax.servlet.http.*;
/**
*
* @author
*/
public class Prueba extends Object implements java.io.Serializable{
public String rol="";
/** Creates new prueba */
public Prueba() {
}
public String getRol() {
return rol;
}
public void setRol(String newRol) {
rol=newRol;
}
}
pagina prueba1.jsp:
<%@page contentType="text/html" import="Prueba"%>
<jsp:useBean id="conexionb" scope="session" class="Prueba"/>
<html>
<head><title>JSP Page</title></head>
<body>
<jsp:getProperty name="conexionb" property="rol" />
<%
conexionb.setRol("Prueba");
%>
<a href="prueba2.jsp">Comprobar bean</a>
</body>
</html>
error en tomcat:
org.apache.jasper.JasperException: Prueba
at org.apache.jasper.compiler.BeanRepository.getBeanType(BeanRepository.java:183)
at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:691)
at org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:552)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:1070)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:1076)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:232)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028)
at org.apache.jasper.compiler.Generator.generate(Generator.java:1871)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:238)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
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)
root cause
java.lang.ClassNotFoundException: Prueba
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1428)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1274)
at org.apache.jasper.compiler.BeanRepository.getBeanType(BeanRepository.java:181)
at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:691)
at org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:552)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:1070)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:1076)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:232)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028)
at org.apache.jasper.compiler.Generator.generate(Generator.java:1871)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:238)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
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)
---------
He compilado la clase y la he puesto en Web-inf/classes y he probado a meterlo en paquete el bean y tampoco me sale.
GRACIAS
Copia tu clase prueba.java en el directorio que te he comentado antes (/ext).
Sigo pensando que el problema está en el classpatah... No te encuentra la clase prueba.java.
Dime algo.
Esto sigue igual. Te mando lo que me sale al iniciar tomcat por si te sirve, yo lo veo un poco raro.
22-ene-2003 12:48:06 org.apache.commons.modeler.Registry loadRegistry
INFO: Loading registry information
22-ene-2003 12:48:06 org.apache.commons.modeler.Registry getRegistry
INFO: Creating new Registry instance
22-ene-2003 12:48:07 org.apache.commons.modeler.Registry getServer
INFO: Creating MBeanServer
22-ene-2003 12:48:08 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on port 8080
Starting service Tomcat-Standalone
Apache Tomcat/4.1.18
22-ene-2003 12:48:16 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on port 8080
22-ene-2003 12:48:16 org.apache.jk.common.ChannelSocket init
INFO: JK2: ajp13 listening on /0.0.0.0:8009
22-ene-2003 12:48:16 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/60 config=C:\jakarta-tomcat-4.1.18\bin\..\conf\jk2
.properties
Para ayudarte necesitaría reproducir tu entorno ... y es complicado! Sigo pensando que es un tema de conf de tu tomcat. Siento no poder ayudarte más... pero empieza a hacerme falta tu entorno.
Suerte!
Salu2,
N.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas