2016-11-05 158 views
0

我想在使用eclipse的maven中運行一個簡單的servlet。但得到錯誤500.請看我做錯了什麼。主要關心的是如何在maven中運行servlet,因爲我對maven不熟悉。HTTP狀態500 - 在eclipse maven中實例化servlet的錯誤

的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類)

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和目錄結構 - 見附圖圖像 enter image description here

錯誤堆棧

 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) 

回答

0

創建一個源文件夾src/main/java和移動有Java源文件

+0

嘗試創建,但顯示「此文件夾已經是源文件夾」 ,當我去構建path-> order和export時,它顯示src/main/java和src/main/test的所有三個src/main(資源,java&test),但是在括號中寫着「missing」。另外兩天前我也在嘗試一個類似的項目,它顯示了所有三個,並且servlet也在工作。 – techvigil

+0

Eclipse之類的聲音與文件系統不同步。嘗試在包資源管理器中刪除項目(僅查看 - 不是文件),然後重新導入爲Maven項目 – Reimeus

+0

是的,eclipse有一些問題,它沒有顯示所有三個文件夾。但是現在我已經嘗試了兩個差異項目,但對於其他項目而言,它可以正常工作,但同樣的問題。對此沒有永久的解決方案。 – techvigil

1

src/main/resources是用於放置properties文件(或靜態資源),因此服務器無法找到類文件,所以您需要src/main/java下創建Java源文件夾。

此外,還要確保.class文件生成,並可以在服務器類路徑(即下WEB-INF/classes),這將解決上述java.lang.ClassNotFoundException

相關問題