2014-07-21 51 views
1

我在eclipse Juno中使用Tomcat 7並使用servlet 3.0規範(jdk 1.7)。 當我使用Eclipse IDE創建一個新的servlet時,它會自動使用@WebServlet("/foo")語句創建一個新的映射,並且一切正常(servlet工作)。刪除@WebServlet會導致java.lang.ClassNotFoundException

卸下@WebServlet("/foo")映射和使用說明書一本在web.xml:

<web-app> 
    <servlet> 
     <servlet-name>Servlet1</servlet-name> 
     <servlet-path>foo.Servlet</servlet-path> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Servlet1</servlet-name> 
     <url-pattern>/foo</url-pattern> 
    </servlet-mapping> 
</web-app> 

引起Tomcat的崩潰:

SEVERE: Allocate exception for servlet java.lang.ClassNotFoundException: 

我敢肯定,foo.Servlet.Servlet1是正道和名字。 我必須在啓動Tomcat之前手動編譯servlet嗎?我直接從eclipse ide運行項目,建立一個Tomcat 7運行時環境。

回答

1

web.xml你的servlet的聲明是不正確的,你需要改變

<servlet-path>foo.Servlet</servlet-path> 

<servlet-class>foo.Servlet</servlet-class> 

而且你應該在你的web.xml文件中添加schema declaration,它會救了你這一切在你的xml編輯器中顯示錯誤,因爲它裏面沒有任何內容,例如<servlet-path>

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 
相關問題