Tomcat Embedded NoClassFound
Bonjour
Je suis actuellement entrain de développer une suite d'outils en ligne de commande.
J'utilise pour ce faire la frameworld Clamshell (http://code.google.com/p/clamshell-cli/)
Je souhaite integrer un tomcat en mode embeded.
J'ai testé mon intègration en faisant un main et les jar dans le buildpath, tout est OK
Mais quand je lance l'implémentation depuis mon appli j'ai l'horreur suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Servlet /abc/ threw load() exception
java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4915)
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5242)
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5237)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662) |
Les jar son bien présents dans le /lib du framework
J'ai fait une recherche, je n'ai pas de conflit sur JspServlet, elle n'est présente que dans un seul jar du classpath
Le plus surprenant est la chose suivante :
Quand je lance mon appli en mode -verbose:class, il me dit qu'elle est chargé et juste appres il me dit qu'elle n'est pas trouvée
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| [Loaded org.apache.tomcat.PeriodicEventListener from file:/D:/development/clamit/lib/tomcat-embed-core.jar]
[Loaded org.apache.jasper.servlet.JspServlet from file:/D:/development/clamit/lib/tomcat-embed-jasper.jar]
[Loaded org.apache.tomcat.util.ExceptionUtils from file:/D:/development/clamit/lib/tomcat-embed-core.jar]
28 nov. 2012 16:40:31 org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet jsp as unavailable
28 nov. 2012 16:40:31 org.apache.catalina.core.StandardContext loadOnStartup
GRAVE: Servlet / threw load() exception
java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
[Loaded org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor from file:/D:/development/clamit/lib/tomcat-embed-core.jar]
28 nov. 2012 16:40:31 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"] |
Je pense la framework que j'utilise pose des problème au nivaeux du classLoading et que le classLoading de tomcat est assez exotique, mais la je sèche un peu et les resources sont trrès faibles....
Merci d'avance!