作者rrrl (rrrl)
看板java
標題[JSP&Servlet] ServletException的問題
時間Fri May 23 00:37:53 2008
小弟我最近開始學做動態網頁,看的書是head first系列的Servlet&Jsp,
看書的過程中遭遇了一些小小問題,希望大大們能耐心看完!
--
書上一開始要先建一個html檔名form.html原始碼如下:
<html>
<body>
<h1>啤酒選擇畫面</h1>
<form method="POST"
action="SelectBeer.do">
選出想喝的啤酒<p>
顏色;
<select name="color" size="1">
<option>light
<option>amber
<option>brown
<option>dark
</select>
<br>
<br>
<input type="SUBMIT">
</form>
</body>
</html>
--
--
接著又照著書上打了一個Servlet,原始碼如下:檔名是BeerSelect.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class BeerSelect extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res)
throws IOException,ServletException{
res.setContentType("text/html;charset=big5");
PrintWriter out = res.getWriter();
out.println("啤酒建議清單<br>");
String c = req.getParameter("color");
out.println("<br>你輸入的顏色是"+c);
}
}
--
--
然後設定web.xml
<web-app xmlns="
http://java.sun.com/xml/ns/j2se"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/j2se/web-app_2_4.xsd">
<servlet>
<servlet-name>Ch3 Beer</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-mame>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>
--
檔案配置的方式是在tomcat的webapp下建立一個Beer-v1,配置如下
Beer-v1/WEB-INF/classes/com/example/web/BeerSelect.class
\ \
form.html web.xml
--
接著去火狐那開那個localhost
第一個form.html會出現,但按下SUBMIT後卻跳出了HTTP Status 500 -
exception:
javax.servlet.ServletException: Error allocating a servlet instance
(下略)
root cause
java.lang.NoClassDefFoundError: com/example/web/BeerSelect(wrong name:
BeerSelect) (下略)
請問這究竟發生什麼事了呢QQ"
我有用Error allocating a servlet instance去估狗過
還找到了作者的網站,發現他們有些人也有一樣的問題,
裡面還提到了是jdk版本不一樣之類的答案XD
不過我還是不了解這之中怎麼運作的,要怎樣解決這個問題呢?
--
奇妙的是:
如果我沒有用那些com/example/web/資料夾,
直接把BeerSelect.class放在classes裡面,修改一下web.xml的設定,
他就可以跑了XD
請問大大們這之中發生了什麼問題呢?
在這邊先謝謝看完的大大們了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.196.111
1F:推 csihcs:java.lang.NoClassDefFoundError 不就說你的class找不到嗎? 05/23 01:15
2F:→ rrrl:可是我的確是放在那個下面了啊= = 是classpath的問題嗎?? 05/23 01:19
3F:推 csihcs:我想有可能是這個原因 05/23 02:04
4F:→ rrrl:所以我該怎麼做= =? 可以說詳細一點嗎? 05/23 10:16
5F:推 csihcs:個人電腦中沒有 J2EE 沒辦法測 05/23 14:42
6F:→ rrrl:那接下來該怎麼做啊QQ" 05/23 18:04
7F:推 ynchang:依照小弟的看法...你的Servlet中好像沒有package... 05/24 14:23