2016-11-05 4 views
0

Ich versuche, ein einfaches Servlet in Maven mit Eclipse auszuführen. Aber Fehler 500 bekommen. Bitte sehen Sie, was ich falsch mache. Hauptsorge ist, wie man ein Servlet in Maven ausführt, da ich mit Maven nicht vertraut bin.HTTP-Status 500 - Fehler bei der Instanziierung von Servlet in Eclipse maven

index.jsp

<html> 
    <body> 
    <h2>Hello World!</h2> 
    <form action="mylog" method="post"> 
    loginID:<input type="text" name="name"/><br/> 
    <input type="submit" value="login"/> 

    </form> 
    </body> 
    </html> 

mylog.java (Servlet-Klasse)

import java.io.IOException; 
    import java.io.PrintWriter; 

    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 


    public class mylog extends HttpServlet { 
    private static final long serialVersionUID = 1L; 


    public mylog() { 
    super(); 
    // TODO Auto-generated constructor stub 
    } 


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
     response.getWriter().append("Served at: ").append(request.getContextPath()); 
    } 


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
     String n = request.getParameter("name"); 

     PrintWriter out = response.getWriter(); 
     out.print(n); 
     out.close(); 

     doGet(request, response); 
    } 

} 

web.xml und Verzeichnis struktur- siehe Bild angebracht enter image description here

Fehlerstack

 HTTP Status 500 - Error instantiating servlet class com.issac.mylog 

    type Exception report 

    message Error instantiating servlet class com.issac.mylog 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Error instantiating servlet class  com.issac.mylog 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Unknown Source) 

root cause 

java.lang.ClassNotFoundException: com.issac.mylog 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Unknown Source) 

Antwort

0

Erstellen eines Quellordner src/main/java und die Java-Quelldatei verschieben dort

+0

es versucht, die Schaffung zu lösen, sondern zeigt „Dieser Ordner ist bereits ein Quellordner“ , auch wenn ich Pfad-> Reihenfolge und Export erstelle, zeigt es alle drei src/main (Ressourcen, Java & Test) aber mit "Missing" in Klammern für src/main/java & src/main/test geschrieben. Auch ich habe ein ähnliches Projekt vor zwei Tagen versucht, da zeigte es alle drei, und Servlet arbeitete auch. – techvigil

+0

Klingt wie Eclipse ist nicht mit dem Dateisystem synchronisiert. Versuchen Sie, das Projekt im Paket-Explorer zu löschen (nur anzeigen - keine Dateien), dann importieren Sie es als Maven-Projekt – Reimeus

+0

ja, es gab ein Problem mit Eclipse, dass es nicht alle drei Ordner angezeigt. Aber jetzt, da ich zwei Diff-Projekte ausprobiert habe, funktioniert es gut für ein, aber dasselbe Problem für andere Projekte. Gibt es dafür keine dauerhafte Lösung? – techvigil

1

src/main/resourcesproperties Dateien für die Platzierung ist (oder statische Ressourcen), so dass der Server nicht von Klassendateien finden konnten, so müssen Sie die Java-Quelldateien unter src/main/java erstellen Mappe.

Stellen Sie außerdem sicher, dass die .class Dateien erzeugt werden und in dem Server Classpath (dh unter WEB-INF/classes), die die oben java.lang.ClassNotFoundException

Verwandte Themen