Servlet web.xml filter — Class nicht gefunden Ausnahme
Ich habe ein problem in der Einrichtung des filter -
den filter habe ich definiert web.xml sieht so aus
<filter>
<filter-name>Log</filter-name>
<filter-class>test.log</filter-class>
</filter>
<filter-mapping>
<filter-name>Log</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Aber ich erhalte die folgende Fehlermeldung -
SEVERE: Exception starting filter Log
java.lang.ClassNotFoundException: test.log
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:256)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Habe ich die Klasse definiert, aber aus irgendeinem Grund bin ich immer der Classnotfoundexcetion. Kann mir jemand helfen?
BEARBEITEN ---
Habe ich ein Paket mit dem Namen test und eine Klasse namens log.
package test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
//Implements Filter class
public class log implements Filter {
public void init(FilterConfig config) {
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException, ServletException {
//Get the IP address of client machine.
String ipAddress = request.getRemoteAddr();
//Log the IP address and current timestamp.
System.out.println("IP "+ ipAddress + ", Time "
+ new Date().toString());
//Pass request back down the filter chain
chain.doFilter(request,response);
}
public void destroy( ){
/* Called before the Filter instance is removed
from service by the web container*/
}
}
Danke,
Sie haben eine Klasse
Wird es eingesetzt? Ist es richtig verpackt? FWIW, Sie sollten wahrscheinlich Folgen Java-Namenskonventionen, die state-Klasse sollten die Namen beginnen mit einem Großbuchstaben..
Ist die Klasse im war/WEB-INF/lib?
Oder in Ihrem WEB-INF/classes?
Es könnte auch sein, in
log
in einem Paket namens test
?Wird es eingesetzt? Ist es richtig verpackt? FWIW, Sie sollten wahrscheinlich Folgen Java-Namenskonventionen, die state-Klasse sollten die Namen beginnen mit einem Großbuchstaben..
Ist die Klasse im war/WEB-INF/lib?
Oder in Ihrem WEB-INF/classes?
Es könnte auch sein, in
WEB-INF/classes/test
InformationsquelleAutor Fox | 2012-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den filter-class-parameter muss eine Java-Klasse implementieren sollte der Filter-Schnittstelle. Können Sie überprüfen, ob das der Fall ist mit Ihnen?
Überprüfen Sie dieses Beispiel für die Anleitung:
http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/
Aus dem obigen link:
InformationsquelleAutor Sid
Lustig genug, das gleiche Problem nur mir heute passiert ist, während er arbeiten war gestern. Nach der Untersuchung zeigt, nichts falsch war, kam ich zu dem Schluss dies war eine eclipse-Umgebung Ausgabe:
Problem Weg!!!
InformationsquelleAutor eric A
Für eine einfache Lösung, versuchen Sie Ihre
log.class
- Datei in diesem Verzeichnis:Erstellen Sie dieses Verzeichnis, falls es nicht existiert.
Wie Ihre zu finden .class-Datei:
Meisten Zeiten, die Standard-Einstellung für Eclipse kompilieren Sie die Quelldatei (
.java
) in eine.class
- Datei, wenn Sie es speichern, sonst müssen Sie möglicherweise zum drücken von STRG-B (build), um ihn zu zwingen kompilieren in eine.class
Datei.Sobald das getan ist, werden Sie in der Lage zu finden, die
log.class
- Datei in Ihrem Eclipse-workspace unter:[your workspace name]/[your eclipse project name]/bin/test/
Der workspace-Verzeichnis ist in der Regel sichtbar Recht, wenn Sie starten Sie eclipse. Für Windows 7 ich denke, es wird standardmäßig der
Users
Verzeichnis, WinXP und 2000 ist es standardmäßig der BenutzerDocuments and Settings
Ordner.Abwechselnd:
Sollten Sie ein "Paket-Explorer" - Ansicht auf der linken Seite des Eclipse-Fensters. Es enthält eine
log.java
Blatt in das Paket Baum. Wenn Sie mit der rechten Maustaste auf das Blatt, und klicken Sie dann aufShow In
>Navigator
öffnen der eigentlichen Datei-Struktur in der "Navigator" - Ansicht.Sollte es eine
bin
Knoten sichtbar in dieser Ansicht. Innerhalb, finden Sie einetest
Knoten und dann im inneren, werden Sie sehenlog.class
. Sie können mit der rechten Maustaste auf es, um es zu kopieren und dann einfach in das Verzeichnis wechseln, gab ich an der Spitze, und fügen Sie es in.Alles ist gut.
Weitere Daten zum Auffinden der
.class
- Datei.InformationsquelleAutor Geronimo
Kann dies etwas falsch in den Quellcode der zugehörigen Klasse.
Vor kurzem habe ich zufällig das gleiche problem sehen.
Nach einer wirklich lange Zeit schwer, Untersuchung, fand ich, dass das die Ausnahme ist kodiert in der Klasse:
So, nach dem kompilieren die source mit der notwendigen libs, das problem ist gelöst.
InformationsquelleAutor Xiè Jìléi
Hatte das problem auch einmal, schließlich klicken Sie rechts auf Projekt -> Projekt Erstellen geholfen.
InformationsquelleAutor KarolR
Ich vermute, Sie haben es nicht richtig kopiert werden, enthalten in der servlet-classpath.
Sehen Sie hier, was macht der servlet-classpath:
Die Steuerung der classpath in ein servlet
Beim ausführen des Codes in den Rahmen ein servlet, die es braucht, um sich in einem von ein paar bestimmten Orten. Es hängt von der servlet-container, und wie Sie die Verpackung Ihrer Klassen, aber der einfachste Weg, um dies zu beheben, nehmen Sie einfach das .Klasse und legen Sie in /WEB-INF/classes/test
InformationsquelleAutor MStodd