Fehler: package javax.servlet nicht vorhanden ist
Habe ich versucht zu implementieren, die eine login-filter meines web-Anwendung mit jsf 2, nach dieser Anleitung:
https://stackoverflow.com/tags/servlet-filters/info
nachdem ich kompiliert habe, meine filter und Hinzugefügt der .die Klasse "web-inf/classes" (wie der guide sagt) der filter gearbeitet, aber ich habe die falsche url-redirect auf die login-Seite gelöscht da ich den filter.class aus dem Ordner (web-inf/classes) und versucht zu kompilieren Sie das Projekt erneut , aber es ist fehlgeschlagen, und da dann im "package javax.servlet existiert nicht"
es ist komisch, weil vorher war es funktioniert und ich habe javax.servlet in meinem pom.xml.. ich habe versucht, die Reinigung, das Projekt, aber nichts.
dies ist mein filter Klasse:
package Bean;
import java.io.IOException;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Created with IntelliJ IDEA.
* User: rodrigo
* Date: 28-04-13
* Time: 06:54 AM
* To change this template use File | Settings | File Templates.
*/
@WebFilter("/Contenido/*")
public class filtro implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
//If you have any <init-param> in web.xml, then you could get them
//here by config.getInitParameter("name") and assign it as field.
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
LoginBean user = (LoginBean) req.getSession().getAttribute("user");
if (user != null && user.isLoggedIn()) {
//User is logged in, so just continue request.
chain.doFilter(request, response);
} else {
//User is not logged in, so redirect to index.
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect(req.getContextPath() + "/Contenido/Login.xhtml");
}
}
@Override
public void destroy() {
//If you have assigned any expensive resources as field of
//this Filter class, then you could clean/close them here.
}
}
dies ist der Fehler:
\Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[5,20] error: package javax.servlet does not exist
[ERROR] \Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[6,20] error: package javax.servlet does not exist
[ERROR] \Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[7,20] error: package javax.servlet does not exist
[ERROR] \Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[8,20] error: package javax.servlet does not exist
[ERROR] \Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[9,20] error: package javax.servlet does not exist
[ERROR] \Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[10,20] error: package javax.servlet does not exist
[ERROR] \Users\rodrigo\IdeaProjects\Frutemu\src\main\java\Bean\filtro.java:[11,31] error: package javax.servlet.annotation does not exist
meine pom.xml:
<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>Frutemu</groupId>
<artifactId>Frutemu</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Frutemu Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>prime-repo</id>
<name>Prime Repo</name>
<url>http://repository.primefaces.org</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>all-themes</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.2-b10</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- MySQL database driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2.1-b04</version>
<scope>provided</scope>
</dependency>
<!-- OpenJPA framework -->
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-all</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
<build>
<finalName>Frutemu</finalName>
<plugins>
<!-- Open Jpa -->
<plugin>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
<version>2.2.0</version>
<configuration>
<includes>**/model/*.class</includes>
<addDefaultConstructor>true</addDefaultConstructor>
<enforcePropertyRestrictions>true</enforcePropertyRestrictions>
</configuration>
<executions>
<execution>
<id>enhancer</id>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Plugin para levantar una instancia de Tomcat 7 liviana, única para este proyecto -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<url>http://127.0.0.1:8080/manager/text</url>
<server>TomcatServer</server>
<path>/Frutemu</path>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jasperreports-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile-reports</goal>
</goals>
</execution>
</executions>
<dependencies>
<!--note this must be repeated here to pick up correct xml validation -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
der name des Pakets ist ok, es generiert automathically in intellij, wenn ich eine neue Klasse erstellen innerhalb des Ordners "Bean", alle meine Probleme begannen nachdem ich zusammengestellt filtro.java und fügte hinzu, die generiert filtro.class in web-inf/classes, da ich wusste, dass ich immer diese Fehlermeldung.
Bitte sehen Sie sich diesen link in Bezug auf das Paket Namenskonventionen: docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
danke für den link, ich weiß, es gibt Konventionen über Paket-und Klassennamen , aber nicht erklären mein problem.. bevor ich Tat, was expalin in meinem ersten post war alles ok , das problem ist also nicht mit dem Namen des Pakets, denke ich, etwas haben zu versaut, nachdem ich kopiert und gelöscht filtro.class in web-inf/classes...
Der Fehler erscheint während der compile-phase. Wahrscheinlich ist der Fehler in Ihrem pom.xml. Ich kann den Fehler reproduzieren Nachrichten durch auskommentieren der javax.servlet-Abhängigkeit in der pom.xml. Wenn Sie nicht sicher sind, diese bitte posten Sie Ihre pom.xml.
InformationsquelleAutor user1462933 | 2013-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den javax.servlet-Abhängigkeit fehlt in Ihrem pom.xml. Fügen Sie den folgenden, um die Abhängigkeiten der Knoten:
Ich fügte hinzu, dass die Abhängigkeit in meiner POM, @Matthias, aber ich bin noch immer der
missing symbol
Fehler für diese Klassen. Irgendwelche Fallstricke, die ich wissen sollte?hast du eine Lösung finden? Wenn nicht, können Sie bitte den vollständigen stacktrace?
Werden Sie sicher, dass die servlet-api-version, die Sie verwenden, entspricht, Ihrem Anwendung-server.
Dieser mein Problem gelöst!
InformationsquelleAutor Matthias Herlitzius
Ich nur diesen code in meine pom.xml und ich ausgeführt der Befehl maven installieren.
InformationsquelleAutor Igor Melão
Die Antwort von @Matthias Herlitzius ist meist korrekt. Nur für weitere Klarheit.
Die servlet-api-Glas ist am besten Links auf den server zu verwalten siehe hier für Details
Mit dieser sagte, die Abhängigkeit hinzufügen, kann je nach Ihren server/container. Zum Beispiel in Wildfly die Abhängigkeit wäre
So becareful, um zu überprüfen, wie Ihre container hat die servlet-Implementierung.
InformationsquelleAutor Ntobeko Mkhize
Ich brauchte import Java ee-api als auch.
Es sei denn ich bekam folgende Fehlermeldung:
InformationsquelleAutor sandaru.ny
In meinem Fall die Migration eines Spring 3.1-app bis 3.2.7, meine Lösung war ähnlich wie Matthias, aber ein bisschen anders-also, warum ich dokumentierte es hier:
In meiner POM fand ich diese Abhängigkeit und verändert es von 6.0 zu 7.0:
Dann später in der POM habe ich ein Upgrade dieses plugin von 6.0 auf 7.0:
InformationsquelleAutor Bane
vielleicht nicht vorhanden ist javaee-api-7.0.jar.
diese jar herunterladen und auf Ihr Projekt richtige clik
InformationsquelleAutor Barış Mercan