Newsgroup: it.comp.java
Titolo: [newbie] mi spiegate quest'errore per favore

Sto testando una jsp che semplicemente fai un login e mi va ad una pagina
welcome jsp
C'è un bean User e per la convalidazione c'è la LoginServlet ed ho
questo:(grazie)
Error: 500
Location: /advjsp/welcome.jsp
Internal Servlet Error:
javax.servlet.ServletException: beans.User
	at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:460)
	at welcome_1._jspService(welcome_1.java:89)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java)
	at
org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
	at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
	at org.apache.tomcat.core.Handler.service(Handler.java:235)
	at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
	at
org.apache.tomcat.facade.RequestDispatcherImpl.doForward(RequestDispatcherIm
pl.java:272)
	at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl
.java:174)
	at LoginServlet.service(LoginServlet.java:28)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java)
	at
org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
	at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
	at org.apache.tomcat.core.Handler.service(Handler.java:235)
	at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
	at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:91
7)
	at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
	at
org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10I
nterceptor.java:176)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:516)
	at java.lang.Thread.run(Thread.java:536)
Root cause:
java.lang.ClassCastException: beans.User
	at welcome_1._jspService(welcome_1.java:57)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java)
	at
org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
	at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
	at org.apache.tomcat.core.Handler.service(Handler.java:235)
	at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
	at
org.apache.tomcat.facade.RequestDispatcherImpl.doForward(RequestDispatcherIm
pl.java:272)
	at
org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl
.java:174)
	at LoginServlet.service(LoginServlet.java:28)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java)
	at
org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
	at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
	at org.apache.tomcat.core.Handler.service(Handler.java:235)
	at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
	at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:91
7)
	at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
	at
org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10I
nterceptor.java:176)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:516)
	at java.lang.Thread.run(Thread.java:536)

[MEGA-CUT]
La parte che ti interessa è questa:
Root cause:
java.lang.ClassCastException: beans.User
	at welcome_1._jspService(welcome_1.java:57)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java)
Vai a vedere la Servlet welcome_1.java (generata dal file welcome.jsp) alla
riga 57.
E' un errore di Cast, quindi forse stai facendo il casting di un Object che
in realtà non corrisponde all'oggetto che credi tu.
Cià
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:81Z73Z181Z173Y1...@usenet.libero.it...


 riavviare tomcat?
No. L'errore è nella welcome.jsp. Come probabilmente sai, ad ogni modifica
della welcome.jsp Tomcat ti ricompila la servlet corrispondente (che trovi
sotto work/localhost/tuaapp).
Guardare la servlet generata, ti serve solo per capire dove sta il problema
e modificare la welcome.jsp nel punto corrispondente


 e modificare la welcome.jsp nel punto corrispondente
[cut]
ho questo:
<jsp:useBean id='user' scope='session' class='beans.User' />
Welcome <%= user.getUserName() %>
il beans sta sotto:
c:\tomcat\webapps\advjsp\web-inf\classes\beans\User
è un'errore di path?Scusa per lo stress!!!

 č un'errore di path?Scusa per lo stress!!!
Ma.... hai guardato la servlet generata, alla riga 57?
Il problema comunque č nel Casting, non č un problema di path né di altro
(te l'ha scritto pure, che vuoi di piů? ClassCastException).
Posta il codice della servlet dalla riga 56 alla 58, e vediamo...


 ha scritto nel messaggio
news:81Z73Z181Z173Y1...@usenet.libero.it...


Dunque, a giudicare dall'errore, secondo me non hai impostato il classpath.
Se non l'hai fatto, imposta il classpath perché punti su classes...
Se non sai farlo, dimmi che sistema operativo hai e ti dico come fare...
Se l'hai fatto, non so che dirti (infatti sembra che non vada a cercare il
bean user dove l'hai messo tu, ma da un'altra parte)


 ha scritto nel messaggio
news:81Z73Z181Z173Y1...@usenet.libero.it...


Dal tuo classpath si vede che non lo hai settato per puntare su classes.
Perché non ti funziona:
tu con il tag
<jsp:useBean eccetera class="package.nomeClasse">
stai dicendo alla jsp di prendere il bean dal package specificato. Se il
classpath non è impostato correttamente, non riesce a trovare il package,
quindi non "vede" il tuo bean.
In definitiva, imposta il classpath perché punti anche su
Tomcat\webapps\tuaApp\web-inf\classes
Così facendo, stai indicando che a partire dalla directory classes in poi,
partono i tuoi package. A questo punto il bean dovrebbe essere "visibile".
Ciao


 Cosě facendo, stai indicando che a partire dalla directory classes in poi,


 Ti ringrazio lo stesso
Beh, senti, il problema è quello. Il Classpath.
Mi sembra superfluo aggiungere che io ho scritto Tomcat per dire: la
directory dove sta installato Tomcat.
se ce l'hai installato sotto programmi\Apache Tomcat 4.0
il classpath dovrà puntare c:\programmi\Apache Tomcat
4.0\tuaApp\WEB-INF\classes


     [questa è la riga 57]  user= (com.sunpress.beans.User)
pageContext.getAttribute("user",PageContext.SESSION_SCOPE);
Qui c'e' un class cast, ovvero stai dicendo a Java di
prendere una istanza della generica classe Object
(quella salvata col nome "user" nella sessione)
e di utilizzarla a tutti gli effetti come se appartenesse
alla classe com.sunpress.beans.User.
La ClassCastException che ottieni come
risposta dal compilatore significa che l'Object che hai
salvato come "user" nella sessione NON puo' essere
considerato/utilizzato come appartenente alla
classe com.sunpress.beans.User, in quanto in realta'
appartiene ad una diversa classe (che nemmeno
e' sottoclasse della summenzionata).
Sospetto che quell'oggetto che hai
salvato come "user" nella sessione appartenga
invece alla classe beans.User che hai creato tu,
e che NON e' sottoclasse di quell'altra (cioe',
non dice "extends com.sunpress.beans.User" nella
propria dichiarazione).
In questo caso, il cast corretto sarebbe
user= (beans.User)  pageContext.getAttribute
("user",PageContext.SESSION_SCOPE);
ammesso che poi la classe che hai creato tu
abbia i metodi che richiami nel seguito su
quell'oggetto, altrimenti vedrai saltar fuori
altri errori man mano che si va avanti.
Comunque, anche se le due classi hanno
metodi simili e fanno cose simili, non puoi usare
l'una per l'altra, perche' non hai
dichiarato nessuna parentela fra le due - e' come
voler usare la calcolatrice come telecomando del
TV, o viceversa  :-)
Auguri
--
Gnomo
...any way the wind blows...