2012-09-24 35 views
0

我現在真的很瘋狂,我試圖開發一個servlet,但我真的不明白爲什麼這個不起作用。錯誤500 - 包裝找不到servlet類Tomcat6

下面的代碼:

import java.io.IOException; 
import javax.servlet.ServletException; 

import java.io.BufferedReader; 
import java.io.PrintWriter; 

import javax.servlet.ServletResponse; 
import javax.servlet.ServletRequest; 
import javax.servlet.GenericServlet; 

public class WipdServlet extends GenericServlet 
{ 
    public void service(ServletRequest request, ServletResponse response) 
    throws IOException { 
     PrintWriter out = response.getWriter(); 

     out.println("<html>"); 
     out.println("<body>"); 
     out.println("<h1>ssup WIPD Servlet</h1>"); 
     out.println("Content Type: " + request.getContentType()); 
     out.println("Content Length: " + request.getContentLength()); 
     out.println("</body>"); 
     out.println("</html>"); 

    } 
} 

和web.xml:

<web-app> 
    <servlet> 
     <servlet-name>Wipd</servlet-name> 
     <servlet-class>WipdServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Wipd</servlet-name> 
      <url-pattern>/wipd</url-pattern>  
    </servlet-mapping> 
</web-app> 

servlet的是下:

/var/lib/tomcat6/webapps/wipd/ 

對於這個工作,我需要運行的Tomcat6下的servlet安裝在運行在虛擬機上的Debian上,我目前正在使用servlet-api開發我的Gentoo,在Gentoo上運行javac之後,我將fil e .class在Debian上。 但是,如果我衝浪:

http://192.168.0.177:8080/wipd/wipd. 

我得到:

javax.servlet.ServletException:包裝找不到servlet類 WipdServlet或它所依賴的 org.apache.catalina.valves類.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol $ Http11Connect ionHandler.process(Http11Protocol.java:602) org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Thread.java:636)

我甚至嘗試將類放入包中,並編輯指定包的web.xml,但沒有任何結果。 我真的不明白。

在此先感謝。

+0

當您在Eclipse中禁用自動構建項目時,也會發生此錯誤。所以,沒有你創建的所有java文件/ servlet的類文件。因此,錯誤。修復 - 選擇你的項目> Eclipse> Project> Build Project'。再次運行您的代碼。 –

回答

0

從例外我可以看出,你的課不是在一個包。請檢查此link,其中描述了與您相似的問題。

0

你需要在一些包中包含你的servlet。做下面的變化 -

package a.b.c; // added 

public class WipdServlet extends GenericServlet { 

    // .. other code 
} 

web.xml中: -

<web-app> 
    <servlet> 
     <servlet-name>Wipd</servlet-name> 
     <servlet-class>a.b.c.WipdServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Wipd</servlet-name> 
     <url-pattern>/wipd</url-pattern>  
    </servlet-mapping> 
</web-app> 

部署後,應在以下位置找到你的班級 -

/var/lib/tomcat6/webapps/wipd/WEB-INF/classes/a/b/c/WipdServlet.class

+0

我已經試過把它放到一個包裏,沒事做...... – alkz

0

我面臨同樣的問題太。其實我的一個程序已經在幾個變化後工作,顯示了我這個錯誤。我甚至做了撤消恢復變化,但它發生在我身上。 最後,我找到了適用於我的場景的工作解決方案。

簡單:

1.Just嘗試清理項目,然後再次運行。如果顯示相同的錯誤,並且您確定代碼沒有任何問題,則

2.在「項目」菜單下啓用「自動構建」菜單項並嘗試清理項目。這一次它爲我工作。

聽說這是因爲當我們做一些改變並運行時,eclipse也會在其背景中做一些更改。所以,即使我們恢復了更改,eclipse也可能沒有恢復它在後臺執行的更改。因此,執行這2個步驟將確保它與用戶更改與其背景更改相匹配。

希望它有助於解決您的問題。