Mon projet fonctionnait donc parfaitement et j'ai décidé d'installer un nouveau disque dur (SSD). Je n'arrive pas à le faire fonctionner correctement.
J'utilise Intellij et toutes ces importations ont des problèmes.
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
Ils disent ne peuvent pas résoudre le symbole.
J'ai aussi ceci dans mon web.xml.
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.mkyong.LoginFilter</filter-class>
</filter>
il est dit
com.mkyong.LoginFilter is not assignable to javax.servlet.Filter
Je vais inclure mon fichier web.xml au cas où quelqu'un en aurait besoin.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://Java.Sun.com/xml/ns/javaee"
xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee
http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>JavaServerFaces</display-name>
<resource-ref>
<description>MySQL Datasource example</description>
<res-ref-name>jdbc/mkyongdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<!-- Change to "Production" when you are ready to deploy -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>faces/default.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.mkyong.LoginFilter</filter-class>
</filter>
<!-- Set the login filter to secure all the pages in the /secured/* path of the application -->
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/secured/*</url-pattern>
</filter-mapping>
<!-- By default go to secured welcome page -->
<welcome-file-list>
<welcome-file>secured/welcome.xhtml</welcome-file>
</welcome-file-list>
</web-app>
C'est l'erreur que j'obtiens maintenant.
javax.servlet.ServletException: Servlet.init() for servlet Faces Servlet threw exception
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:504)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:79)
org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:610)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:534)
org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1081)
org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:658)
org.Apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.Java:277)
org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.Java:2381)
org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.Java:2370)
Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
Java.lang.Thread.run(Thread.Java:745)
root cause
Java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.Java:800)
javax.faces.FactoryFinder.getFactory(FactoryFinder.Java:302)
javax.faces.webapp.FacesServlet.init(FacesServlet.Java:186)
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:504)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:79)
org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:610)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:534)
org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1081)
org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:658)
org.Apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.Java:277)
org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.Java:2381)
org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.Java:2370)
Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
Java.lang.Thread.run(Thread.Java:745)
J'utilisais aussi Apache Tomcat 8 au début, puis je me suis dit que c'était peut-être le problème et je l'ai changé en 7, puis en 6. Si vous avez besoin d'autre chose, faites-le-moi savoir!
voici le POM.xml comme demandé.
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0
http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.common</groupId>
<artifactId>JavaServerFaces</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>JavaServerFaces Maven Webapp</name>
<url>http://maven.Apache.org</url>
<repositories>
<repository>
<id>Java.net.m2</id>
<name>Java.net m2 repo</name>
<url>http://download.Java.net/maven/2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.2.5.RELEASE</version>
</dependency>
<!-- MySQL database driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<version>5.1.9</version>
</dependency>
<!-- Spring framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>2.5.6</version>
</dependency>
<!-- For Servlet Container like Tomcat -->
<!-- http://download.Java.net/maven/2 -->
<dependency>
<groupId>com.Sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.0-b03</version>
</dependency>
<!-- EL 2.2 to support method parameter in EL -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
<!-- http://repo1.maven.org/maven2/ -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<finalName>JavaServerFaces</finalName>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
Servlet-api.jar fait partie de votre serveur (Tomcat dans ce cas). Vous devez soit indiquer une référence à ce fichier dans votre POM et le marquer dans le champ "fourni", soit (si vous n'utilisez pas maven pour une raison quelconque) vous devez l'ajouter à votre chemin de classe projet).
Il est possible que votre installation de Tomcat avec forder ou maven repo soit différente après la réinstallation de votre disque dur. Cela ressemble à une question environnementale.
Comme quelqu'un l'a mentionné ci-dessus - ces bibliothèques font partie d'un serveur d'applications, elles ne doivent donc pas être déployées sur le serveur, contrairement à d'autres bibliothèques telles que Spring, etc. Vous devez les référencer en tant que ressource fournie.
Si vous n'utilisez pas Maven pour votre projet (c.-à-d. Tutoriels, etc.), vous pouvez aller à vos paramètres de structure de projet/Modules/votre module/Dépendances .. et sous la liste des dépendances se trouve un petit sélectionnez "Bibliothèque" et ensuite, la fenêtre contextuelle contenant les bibliothèques du serveur d'applications apparaîtra. Il devrait être sélectionné comme prévu par la suite.
Il semble que quelque chose ait été gâché lors de l'importation du projet. J'ai fait un nouveau projet et juste copié le tout et cela a fonctionné parfaitement. L'importation permettait de ne pas trouver les fichiers jar. Je ne sais pas pourquoi .... Merci à tous pour votre aide!
Vous utilisez dans le terminal mvn clean install
Cette commande télécharge toutes les dépendances, après, vous allez dans "Projet Maven" et prenez "Réimporter tout Projet Maven"