it-swarm.com.de

IntelliJ IDEA Import javax.servlet kann nicht aufgelöst werden. *;

Ich hatte also ein perfektes Projekt und entschied mich für die Installation einer neuen Festplatte (SSD). Jetzt kann ich nicht, dass es richtig läuft.

Ich benutze Intellij und habe alle diese Importe Probleme.

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;

Sie sagen, dass das Symbol nicht aufgelöst werden kann.

Auch in meiner web.xml habe ich diese.

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.mkyong.LoginFilter</filter-class>
</filter>

es sagt aus

com.mkyong.LoginFilter is not assignable to javax.servlet.Filter

Ich werde meine web.xml einschließen, nur für den Fall, dass jemand es braucht.

<?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>

Dies ist der Fehler, den ich jetzt bekomme.

   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)

Ich habe auch zuerst Apache Tomcat 8 verwendet, dann dachte ich, dass dies das Problem sein könnte, und ich habe es auf 7 und dann auf 6 geändert. Wenn Sie etwas anderes benötigen, lass es mich wissen!

hier ist die POM.xml wie angefordert.

  <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>

28
Justin

Das servlet-api.jar ist Teil Ihres Servers (in diesem Fall Tomcat). Sie müssen entweder einen Verweis auf dieses Jar in Ihrem POM angeben und im angegebenen Bereich markieren oder (wenn Sie aus irgendeinem Grund nicht maven verwenden), müssen Sie ihn Ihrem Klassenpfad hinzufügen (den Bibliotheken Ihres Webmoduls in Ihrem Projekt).

Die Chancen sind möglicherweise, dass Ihr Tomcat-Installations-Forder oder -Maven-Repo nach der HD-Neuinstallation anders ist. Es scheint ein Umweltproblem zu sein.

21
Filip

Wie oben erwähnt - diese Bibliotheken sind Teil eines Anwendungsservers. Sie sollten daher nicht wie andere Bibliotheken wie Spring usw. auf dem Server bereitgestellt werden. Sie müssen auf sie als bereitgestellte Ressource verweisen. 

Wenn Sie Maven nicht für Ihr Projekt verwenden (z. B. Lernprogramme usw.), können Sie zu Ihren Projektstruktureinstellungen modulen/Ihrem Modul/Abhängigkeiten gehen. In der Liste der Abhängigkeiten befindet sich ein kleines Pluszeichen (+) Wählen Sie "Library" und danach wird das Popup mit Application Server Libraries angezeigt. Es sollte danach ausgewählt werden. 

/ - Application Server Libraries Dialog

18
Jiri Vlasimsky

Ich habe das gleiche Problem gefunden und es heute behoben. Ich habe zwar javax.servlet-api in meiner pom.xml deklariert, aber trotzdem die Ausgabe erhalten. Dann habe ich es behoben, indem ich die Datei javax.servlet-api: 3.10.jar in den Klassenpfad des Projekts eingefügt habe.

 enter image description here

2
Luan Vo

Es scheint, dass beim Import des Projekts etwas durcheinander war. Ich habe ein neues Projekt gemacht und einfach alles kopiert und es hat perfekt funktioniert. Beim Importieren konnten die JAR-Dateien nicht gefunden werden. Nicht sicher warum ... Vielen Dank für die Hilfe!

2
Justin

Sie verwenden in Terminal mvn clean install  

Dieser Befehl lädt alle Abhängigkeiten herunter, nachdem Sie zu "Maven Project" gehen und "Reimport All Maven Project" verwenden.

enter image description hereenter image description here

1
Yani Morales