2014-08-31 8 views
18

Also hatte ich mein Projekt perfekt funktioniert und ich beschloss, eine neue Festplatte (SSD) zu installieren und jetzt kann ich es nicht richtig ausgeführt werden.IntelliJ IDEA kann den Import nicht auflösen javax.servlet. *;

Ich benutze Intellij und habe alle diese Importe Probleme haben.

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, kann Symbol nicht auflösen.

Auch in meiner web.xml habe ich das.

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

heißt es

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

Im meine web.xml gehen zählen nur falls 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 war auch Apache Tomcat 8 zunächst mit dann dachte ich, dass das Problem sein könnte und habe ich es bis 6 bis 7 dann Wenn Sie etwas anderes lassen Sie 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> 

+1

tun Sie das Servlet-api.jar in Ihrem Classpath haben? – SparkOn

+0

Um ehrlich zu sein, ich bin nicht zu 100 Prozent sicher, wie das überprüfen .... Ich meine, ich sehe, gibt es 3 verschiedene XML-Dateien in meiner Bibliothek Ordnern mit diesem Namen Maven_javax_el_el_api_2_2, Maven_javax_servlet_jsp_jsp_api_2_1, Maven_javax_servlet_jstl_1_2 und Maven_javax_servlet_servlet_api_2_5 – Justin

+0

I Just auf Pakete geklickt und Es zeigt, dass ich unter JavaServerFaces -> Bibliotheken -> javax -> Servlet -> Es gibt eine Filter-Schnittstelle .... und unter http gibt es eine Schnittstelle für HttpServletRequest. Ich traf auch kompilieren auf der einzelnen Klasse, die die Probleme hat, und es sagt mir jetzt, dass Java: Paket javax.servlet nicht existiert. – Justin

Antwort

17

Das Servlet-api.jar Teil Ihrer Server (Tomcat in diesem Fall) ist. Sie müssen entweder einen Verweis auf diesen jar in Ihrem POM angeben und ihn im 'bereitgestellten' Bereich markieren oder (wenn Sie maven aus irgendeinem Grund nicht verwenden) müssen Sie ihn zu Ihrem Klassenpfad hinzufügen (die Bibliotheken Ihres Webmoduls in Ihrem Projekt).

Die Chancen sind vielleicht, dass Ihre Tomcat Installation Forder oder Maven Repo ist anders nach Ihrer HD neu installieren. Es scheint sich um ein Umweltproblem zu handeln.

+0

Ich habe es manuell zu meinem Klassenpfad hinzugefügt, und es löste die Intellij-Rot-Importe, aber wenn ich den Code kompilierte, würde es sagen, dass das javax.servlet keine gültige Referenz ist. Oder etwas in dieser Richtung. Sagen, es konnte nicht finden, die javax.servlet – Justin

+0

Auch versuchte Neuinstallieren von Intellij. Umsonst. Ich werde versuchen, JDK und Maven neu zu installieren und zu sehen, was passiert, da ich gerade alles Mögliche mache. – Justin

+0

Neuinstallation hatte keine Wirkung. – Justin

2

Es scheint, dass etwas beim Importieren des Projekts durcheinander geraten ist. Ich habe ein neues Projekt gemacht und einfach alles kopiert und es hat perfekt funktioniert. Der Import führte dazu, dass die JAR-Dateien nicht gefunden wurden. Nicht sicher warum .... Danke für die Hilfe alle!

1

Ich fand das gleiche Problem und reparierte es gerade heute. Obwohl ich javax.servlet-api in meiner pom.xml deklariert habe, aber immer noch das Problem. 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

9

Als jemand erwähnt es oben - diese Bibliotheken Teil eines Applikationsservers sind, so dass sie nicht an den Server als andere Bibliotheken wie Spring und so weiter eingesetzt werden soll. Sie müssen sie als bereitgestellte Ressource referenzieren.

Wenn Sie Maven nicht für Ihr Projekt verwenden (dh Tutorials etc.), können Sie zu Ihrer Projektstruktur Einstellungen/Module/Ihr Modul/Abhängigkeiten gehen. Unter der Liste der Abhängigkeiten befindet sich ein kleines Pluszeichen (+) wo Sie "Bibliothek" auswählen können und danach wird das Popup mit den Application Server Libraries angezeigt. Es sollte wie später bereitgestellt ausgewählt werden.

Application Server Libraries Dialog

+0

funktionierte für mich !! Danke! @ Jiří Vlašimský –

Verwandte Themen