簡體   English   中英

HTTP 狀態 500 - 實例化 servlet 時出錯 class pkg.coreServlet

[英]HTTP Status 500 - Error instantiating servlet class pkg.coreServlet

我正在創建簡單的 servlet 並將其部署在 tomcat 服務器中,但出現以下錯誤:

HTTP 狀態 500 - 實例化 servlet 時出錯 class pkg.coreServlet

tomcat服務器上的文件結構:

webapps     
| 
- aarya
  |
  - WEB-INF
    |
     -web.xml
     -src(folder)
       |
       -pkg
         |
         -coreServlet.class

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


<servlet>
    <servlet-name>aaryaservlet</servlet-name>
    <servlet-class>pkg.coreServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>aaryaservlet</servlet-name>
        <url-pattern>/coreServlet</url-pattern>
    </servlet-mapping>
</web-app>

coreServlet.java:

package pkg;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*; 

public class coreServlet extends HttpServlet
{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest req,HttpServletResponse res)
 throws ServletException,IOException


   {
        PrintWriter out = res.getWriter();
        res.setContentType("text/html");
        out.println("this is First servlet Example ");
    }
}

url 我給出的是http://localhost:8080/aarya/coreServlet我嘗試重新啟動 tomcat 但我遇到了同樣的錯誤。 我哪里做錯了?

不要把src文件夾放在WEB-INF目錄下!!

改變

private static final long serialVersionUID = 1L;

到任何其他值,如

private static final long serialVersionUID = 102831973239L;

你也可以在eclipse中自動生成它。

這是因為應用程序中的每個 servlet 都有一個唯一的 id。而 tomcat 會導致兩個 servlet 具有相同 id 的問題......

在我的情況下,缺少private static final long serialVersionUID = 1L; 行導致相同的錯誤。 我添加了該行並且它起作用了!

您是否關閉了 web.xml 中的 < web-app > 標簽? 從您發布的內容來看,似乎缺少結束標記。

servlet 類應該在 WEB-INF/classes 而不是 WEB-INF/src 中。

servlet 啟動/請求期間的多種情況下可能會發生上述錯誤。 希望您檢查服務器日志的完整堆棧跟蹤,如果您有tomcat,您還可以在500內部服務器錯誤頁面的html預覽中看到確切原因

奇怪的是,如果您嘗試再次點擊請求 url,您將獲得 404 Not Found 頁面。

您還可以通過在所有類構造函數初始化塊上放置斷點來調試此問題,其對象是在 servlet 啟動/請求期間創建的。

就我而言,我沒有為 Weld CDI 注入工作加載 javaassist jar。 它顯示 NoClassDefFound 錯誤。

我在 Servlet 實例化方面遇到了問題。 我清理了這個項目,它對我有用。 在 eclipse 菜單中,轉到 Project->Clean。 它應該工作。

試試這個:)

前:-

<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>TestServlet</servlet-class>  
</servlet>

后:-

 <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>operation.TestServlet</servlet-class>
 </servlet>

請確保以下幾點:

  1. 正確的“戰爭”文件結構,即 WEB-INF 和 META-INF
  2. “web.xml”文件設置正確。
  3. 最后也是重要的: private static final long serialVersionUID = 1L; 應該在您的班級中( <servlet-class>MyClass</servlet-class> )。

可能對尋求...的人有幫助

為我工作。

  • 保持 servlet-name 與 class 名稱相同。
  • 清理並重建(確保您的其他項目已關閉)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM