java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
J'ai un vieux struts 1 application qui a toujours été construit à l'aide de la Fourmi, dont je suis la conversion à l'utilisation de Maven à la place. La structure de mon application est modulaire, avec gestion de la dépendance dans le contenant le module. Le contenant du module dep mgmt section contient:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
...
</dependencies>
</dependencyManagement>
Quand j'construire la guerre (je lance le package
Maven travail à partir de l'contenant le module) et d'exécuter une configuration de Tomcat avec la guerre de l'ide, je vois la suite de mon navigateur:
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:161)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:630)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
java.net.URLClassLoader$1.run(URLClassLoader.java:202)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(URLClassLoader.java:190)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:628)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Tout ce que je peux trouver de la recherche sur ce qui suggère que la cause est un conflit de version dans javax.servlet pots, mais il n'y a rien dans mon WEB-INF/lib du répertoire. J'ai essayé d'utiliser la portée de provided
compile
et même install/pom
mais ce n'est pas faire quelque chose d'utile.
Il n'y a rien dans les logs de tomcat.
J'ai confirmé que les jsp sont en cours de compilation. Je suis à l'aide de jspc-maven-plugin.
Dans mon sous-module (et non de l'contenant un) pom.xml, j'ai:
<build>
<!-- default goal to run if somebody doesn't pick one (rarely matters) -->
<defaultGoal>install</defaultGoal>
<!-- resources and filtering - also see configuration under maven-war-plugin below -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/resources/${env}.properties</filter>
<filter>src/main/resources/${env}.tokens</filter>
</filters>
<plugins>
<!-- begin - precompiling jsps -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jspc-maven-plugin</artifactId>
<executions>
<execution>
<id>jspc</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<warSourceDirectory>${basedir}/src/main/webroot</warSourceDirectory>
<inputWebXml>${basedir}/src/main/webroot/WEB-INF/web.xml</inputWebXml>
<!--<workingDirectory>${basedir}/src/main/webroot</workingDirectory>-->
</configuration>
</execution>
</executions>
</plugin>
<!-- end - precompiling jsps -->
<!-- used to build warfiles -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<webResources>
<resource>
<directory>${pom.basedir}/src/main/webroot</directory>
<filtering>true</filtering>
<!--<targetPath>WEB-INF</targetPath>-->
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
Je peux voir dans le maven build de sortie que les jsp sont en cours de compilation. Mais j'ai toujours le JasperException.
source d'informationauteur barclay
Vous devez vous connecter pour publier un commentaire.
Il a été un moment depuis que j'ai posté, mais j'ai pensé que je voudrais montrer comment j'ai pensé à elle (autant que je m'en souviens).
J'ai fait une Maven de l'arbre des dépendances pour trouver les conflits de dépendance, et j'ai enlevé tous les conflits avec des exclusions dans les dépendances, par exemple:
Aussi, j'ai utilisé le
provided
portée pour javax.servlet dépendances afin de ne pas introduire un conflit supplémentaire à ce qui est prévu par Tomcat quand je lance l'application.HTH.
Un plus pour les autres réponses qui ne fonctionne pas pour moi: Dans mon cas, l'erreur s'est produite en raison d'erreurs d'autorisation. Le projet s'est déployé tout le tomcat a été exécute en tant que root, plus tard, quand a commencé comme utilisateur tomcat j'ai obtenu l'erreur à partir de la question du titre.
Solution dans mon cas était de définir les autorisations de droite, de l'e.x. sur un système unix:
J'ai eu le même problème dans mon projet. J'ai utilisé un IntelliJ Idea 14 et Maven 8.
Et ce que j'ai remarqué, c'est que quand j'ai ajouté un tomcat destination de l'IDE, ce automatiquement un lien entre deux pots de répertoire lib de tomcat, ils ont été servlet-api et jsp-api. Aussi, j'ai eu dans mon pom.xml. J'ai tué une journée entière à essayer de comprendre pourquoi je me fais de java.lang.ClassNotFoundException: org.apache.jsp.index_jsp. Et kewpiedoll99 est droit. C'est parce qu'il y a des conflits de dépendance. Quand je l'ai ajoutée à ces deux pots dans mon pom.xml j'ai trouvé un bonheur 🙂
Quelle est la version de tomcat utilisez-vous ? Ce qui m'apparaît, c'est que la version de tomcat n'est pas en faveur de la servlet &jsp versions que vous utilisez. Vous pouvez changer pour quelque chose comme ci-dessous ou regardez dans votre version de tomcat sur ce qu'il prend en charge et modifier les versions en conséquence.
J'ai aussi perdu une moitié de la journée à essayer de résoudre ce problème.
Il est apparu que racine était mon projet pom.xml fichier avec dépendance:
Autres membres de l'équipe n'avait pas de problèmes.
À la fin, il est apparu, que j'ai eu plus récent tomcat qui a différentes version de jsp-api fournie (dans tomcat 7.0.60 et au dessus, il sera jsp-api 2.2).
Donc dans ce cas, options:
Cela a été causé en raison de quelque chose comme ça dans mon cas:
Le problème était en fait je n'avais pas d'en-tête.jsp dans mon projet. Cependant le message d'erreur était encore en disant index_jsp n'a pas été trouvé.