[JSP] Class not found !

Class not found ! [JSP] - HTML/CSS - Programmation

Marsh Posté le 17-09-2002 à 10:09:43    

Quelle est l'arborescence à respecter pour dans le répertoire web-apps ?
 

web-apps/monprojet/ -> index.html
web-apps/monprojet/jsp -> *.jsp
web-apps/monprojet/WEB-INF/classes -> *.java *.class


 
Je me suis basé sur l'exemple fournis avec tomcat et si dans un de mes fichier jsp je fait appel à une de mes classes, j'ai droit à cette erreur:
 

/var/tomcat4/work/Standalone/localhost/tracemq/tracemq$jsp.java:3: Class RequestHandler not found in import.
import RequestHandler;    


 
Même en mettant les *.class dans le même répertoire que le .jsp, ça ne marche pas.
Quel est le soucis ?
 

CLASS_PATH=.:/opt/j2sdk1.4.0_01/lib

pout user tomcat4


Message édité par mog le 17-09-2002 à 10:11:36
Reply

Marsh Posté le 17-09-2002 à 10:09:43   

Reply

Marsh Posté le 17-09-2002 à 10:52:41    

donne un package à ta classe bordayl. C'est tout le temps la même rengaine. Tomcat ne sais pas importer des classes sont dans le package par défaut (à savoir pas de package du tout)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 10:53:39    

ceci dit tu peux parfaitement mixer les JSP avec les pages HTML (suivant config de ton serveur mais normallement tu ne devrais pas les mettre dans un rep spécial ou dédié)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 10:55:53    

DarkLord a écrit a écrit :

donne un package à ta classe bordayl. C'est tout le temps la même rengaine. Tomcat ne sais pas importer des classes sont dans le package par défaut (à savoir pas de package du tout)




Si il peut. Je l'ai deja fait, même si cai mal. Faut juste le mettre quand meme dans le import="..." de la jsp.

Reply

Marsh Posté le 17-09-2002 à 11:00:38    

nan y peut pas. Une servlet ca va mais un bean ou un objet utilisé dans une JSP tu peux pas  :na:  
 
(du moins avec les versions de tomcat que j'ai utilisé, ça a peut etre changé depuis la dernière version)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 11:02:01    

DarkLord a écrit a écrit :

nan y peut pas. Une servlet ca va mais un bean ou un objet utilisé dans une JSP tu peux pas  :na:  
 
(du moins avec les versions de tomcat que j'ai utilisé, ça a peut etre changé depuis la dernière version)




Si il peut !
Mais c'est vrai que j'ai pas essayé en 3.x. Ou alors j'ai pas fait expres.

Reply

Marsh Posté le 17-09-2002 à 11:03:03    

C'était dans un package, j'ai changé car je croyais que ça venais de là.
Je viens de remettre "comme y faut" et ça change rien:
 

/var/tomcat4/work/Standalone/localhost/tracemq/tracemq$jsp.java:3: Class Tracemq.RequestHandler not found in import.
import Tracemq.RequestHandler;


 
avec les fichier suivants:
/web-apps/tracemq/WEB-INF/classes/RequestHandler.java
 

package Tracemq;
public class RequestHandler {
    private String localService;
    public RequestHandler() {  
        localService = null;
    }
    public void setLocalService(String ls) {
        localService = ls;
    }  
    public String getLocalService() {  
        return localService;
    }
}


 
/web-apps/tracemq/tracemq.jsp
 

<%@ page language="java"%>
<%@ page import="Tracemq.RequestHandler" %>
 
<jsp:useBean id="reqBean" scope="page" class="Tracemq.RequestHandler" />
<jsp:setProperty name="reqBean" property="*" />
 
<html>
<body>
<%@ include file="coucou.html" %>
</body>
</html>


Reply

Marsh Posté le 17-09-2002 à 11:04:24    

DarkLord a écrit a écrit :

ceci dit tu peux parfaitement mixer les JSP avec les pages HTML (suivant config de ton serveur mais normallement tu ne devrais pas les mettre dans un rep spécial ou dédié)




 
C'est juste pour que ce soit plus propre:
Le html "pur" dans un coin, les jsp avec la logique dans l'autre.

Reply

Marsh Posté le 17-09-2002 à 11:04:52    

Mog a écrit a écrit :

 
avec les fichier suivants:
/web-apps/tracemq/WEB-INF/classes/RequestHandler.java
 

Code :
  1. package Tracemq;
  2. public class RequestHandler {
  3. ...
  4. }






 
Oh putain !
Tu te rends compte de ce que tu viens d'écrire ?

Reply

Marsh Posté le 17-09-2002 à 11:06:06    

pa de majuscule dans le nom des package !

Reply

Marsh Posté le 17-09-2002 à 11:06:06   

Reply

Marsh Posté le 17-09-2002 à 11:06:11    

Euh ... a voir le ton utilisé, j'ai dû faire un couille !

Reply

Marsh Posté le 17-09-2002 à 11:08:48    

En tout cas, ça change rien !

Reply

Marsh Posté le 17-09-2002 à 11:09:14    

benou a écrit a écrit :

pa de majuscule dans le nom des package !




Encore que ca c'est une convention, c'est pas ca qui fait que ca marche pas.

Reply

Marsh Posté le 17-09-2002 à 11:09:51    

Mog a écrit a écrit :

Euh ... a voir le ton utilisé, j'ai dû faire un couille !




Oui. Dans l'arborescence des fichiers faut respecter l'arborescence des paquets...

Reply

Marsh Posté le 17-09-2002 à 11:11:32    

Mog a écrit a écrit :

En tout cas, ça change rien !




oui mais faut pas

Reply

Marsh Posté le 17-09-2002 à 11:12:10    

DarkLord<  
 
/WEB-INF/classes/Toto.class

Code :
  1. public class Toto
  2. {
  3.     public static String getMessage()
  4.     {
  5.         return "toto";
  6.     }
  7. }


 
/toto.jsp

Code :
  1. <%@ page import="Toto" %>
  2. <%= Toto.getMessage() %>


 
et ca marche très bien (Tomcat 4.03, j2sdk1.4.0)

Reply

Marsh Posté le 17-09-2002 à 11:13:05    

allez, essaye comme ca :  

/web-apps/tracemq/WEB-INF/classes/[#e21c00]tracemq/[/#e21c00]RequestHandler.java


Code :
  1. package tracemq;
  2. public class RequestHandler {
  3. ...
  4. }


Message édité par benou le 17-09-2002 à 11:13:13
Reply

Marsh Posté le 17-09-2002 à 11:18:17    

/var/tomcat4/work/Standalone/localhost/tracemq/toto$jsp.java:3: Class Toto not found in import.
import Toto;


 
Je dois avoir un pb de config du server !

Reply

Marsh Posté le 17-09-2002 à 11:20:27    

Mog a écrit a écrit :

/var/tomcat4/work/Standalone/localhost/tracemq/toto$jsp.java:3: Class Toto not found in import.
import Toto;


 
Je dois avoir un pb de config du server !




ou bien tu dois pas savoir faire un package ...

Reply

Marsh Posté le 17-09-2002 à 11:21:24    

Mog a écrit a écrit :

/var/tomcat4/work/Standalone/localhost/tracemq/toto$jsp.java:3: Class Toto not found in import.
import Toto;


 
Je dois avoir un pb de config du server !




 
C'est quoi ca ? T'as repris mon truc ? C'était juste pour montrer a darklord... La la classe est dans le repertoire tracemq mais pas dans le paquet si c'est ce que je crois. Reprends le truc de benou plutot.

Reply

Marsh Posté le 17-09-2002 à 11:28:53    

Pour récapituler:
 

.:
server.xml
toto.jsp
tracemq.jsp
WEB-INF
 
./WEB-INF:
classes
 
./WEB-INF/classes:
Toto.class
Toto.java
tracemq
 
./WEB-INF/classes/tracemq:
RequestHandler.class
RequestHandler.java


 
tracemq.jsp

<%@ page language="java"%>
<%@ page import="tracemq.RequestHandler" %>
 
<jsp:useBean id="reqBean" scope="page" class="tracemq.RequestHandler" />
<jsp:setProperty name="reqBean" property="*" />
 
<html>
<body>
<%@ include file="coucou.html" %>
</body>
</html>


 
RequestHandler.java

package tracemq;
public class RequestHandler {
    private String localService;
    public RequestHandler() {  
        localService = null;
    }
    public void setLocalService(String ls) {
        localService = ls;
    }    
    public String getLocalService() {  
        return localService;
    }
}


 
Et ça marche toujours pas ! Y'a rien à configurer dans server.xml ? (à part ajouter un nouveau context tracemq)

Reply

Marsh Posté le 17-09-2002 à 11:30:22    

Mog a écrit a écrit :

C'était dans un package, j'ai changé car je croyais que ça venais de là.
Je viens de remettre "comme y faut" et ça change rien:
 

/var/tomcat4/work/Standalone/localhost/tracemq/tracemq$jsp.java:3: Class Tracemq.RequestHandler not found in import.
import Tracemq.RequestHandler;


 
avec les fichier suivants:
/web-apps/tracemq/WEB-INF/classes/RequestHandler.java
 




 
bin c'est normal. Déjà classes c'est pour les .class, pas pour les point Java. Et de deux il va avoir du mal à compiler ta classe meme si il pouvait puisque tu l'as mis dans le package par défaut, or la source le déclare dans le pacakge tracemq.
 
Donc tu dois compiler et mettre le .class dans
 
/web-apps/tracemq/WEB-INF/classes/tracemq/RequestHandler.class


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 11:31:15    

lorill a écrit a écrit :

DarkLord<  
 
/WEB-INF/classes/Toto.class

Code :
  1. public class Toto
  2. {
  3.     public static String getMessage()
  4.     {
  5.         return "toto";
  6.     }
  7. }


 
/toto.jsp

Code :
  1. <%@ page import="Toto" %>
  2. <%= Toto.getMessage() %>


 
et ca marche très bien (Tomcat 4.03, j2sdk1.4.0)




 
Essaie d'en faire un bean avec <jsp:useBean ....


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 11:34:49    

<%@ page import="Toto" %>
<jsp:useBean id="totoBean" scope="page" class="Toto" />
<jsp:setProperty name="totoBean" property="*" />


 
Toto not found  :cry:  

Reply

Marsh Posté le 17-09-2002 à 11:36:06    

ca s'addressait à lorill pas à toi. Déjà qu'il trouve pas la classse chez toi c'est normal que useBean ne fonctionne pas non plus.
 
Ceci dit que raconte les logs de ton tomcat?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 11:41:23    

Toujours la même chose:
 

org.apache.jasper.JasperException: Unable to compile class for JSPNote: sun.tools.javac.Main has been deprecated.
 
/var/tomcat4/work/Standalone/localhost/tracemq/toto$jsp.java:3: Class Toto not found in import.
import Toto;
       ^
1 error, 1 warning
 
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:285)
        at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:548)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:176)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:188)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java)
        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:243)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
        at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
        at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
        at java.lang.Thread.run(Thread.java:536)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
        at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
        at java.lang.Thread.run(Thread.java:536)
 
~

Reply

Marsh Posté le 17-09-2002 à 11:42:17    

toi tu as un vieux JDK qui trane dans ton path
 
en ligne de commande fais un peu
 

Code :
  1. java -version


Message édité par darklord le 17-09-2002 à 11:42:40

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 11:45:56    

ben non:
 

java -version
java version "1.4.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03)
Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode)

Reply

Marsh Posté le 17-09-2002 à 11:47:18    

Mais heu, ta classe, y faudrait pas la compiler avant ? Et redémarrer Tomcat ensuite ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 17-09-2002 à 12:02:41    

R3g a écrit a écrit :

Mais heu, ta classe, y faudrait pas la compiler avant ? Et redémarrer Tomcat ensuite ?




AAARARRARRARRRAGGGGG c'était ça, faut le redémmarrer à chaque fois !  :gun:  
 
Merci beaucoup, je m'en vais me flageller avec des orties frais en courant nu dans les champs.


Message édité par mog le 17-09-2002 à 12:02:57
Reply

Marsh Posté le 17-09-2002 à 12:09:09    

:D


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 17-09-2002 à 12:14:18    

Mog a écrit a écrit :

ben non:
 

java -version
java version "1.4.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03)
Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode)






 
Vade retro satanas il a JDK 1.4 :D


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 12:14:38    

lorill j'attends le useBean ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 12:33:09    

DarkLord a écrit a écrit :

lorill j'attends le useBean ...




Désolé j'étais parti manger... Mais tu vas être deçu, ca marche aussi (alors que ca j'en étais pas sur)
 
/WEB-INF/classes/Toto.class

Code :
  1. public class Toto
  2. {
  3.     public Toto()
  4.     {
  5.     }
  6.    
  7.     public String getMessage()
  8.     {
  9.         return "toto";
  10.     }
  11. }


 
/toto.jsp

Code :
  1. <%@ page import="Toto" %>
  2. <jsp:useBean id="totoBean" scope="page" class="Toto" />
  3. <jsp:getProperty name="totoBean" property="message" />


 
Et ca marche. tadaaaaa  :D

Reply

Marsh Posté le 17-09-2002 à 12:34:12    

pour ne pas avoir a redemarrer trop souvent, un ptit reloadable=true dans la section correspondante a ta webapp dans le fichier de conf de tomcat ca peut aider
attention cependant, ca marche pas a tous les coups je crois

Reply

Marsh Posté le 17-09-2002 à 12:40:36    

lorill a écrit a écrit :

 
Et ca marche. tadaaaaa  :D  




 
[:sisicaivrai]
 
note tant mieux mais bon ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 12:41:54    

DarkLord a écrit a écrit :

 
 
[:sisicaivrai]
 
note tant mieux mais bon ...




 
T'inquiete, je sais que c'est pas terrible, j'aime bien avoir des espaces de noms relativements propres.

Reply

Marsh Posté le 17-09-2002 à 12:58:39    

pq ce topic n'est pas dans la categorie java?
c'est inadmissable :fou:
que fait le modo :fou:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 17-09-2002 à 12:58:54    

ouais  :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-09-2002 à 12:59:01    

a mort antp!


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed