2017-01-07 14 views
0

を動作しません。私は本「Head first servlets & JSP」を読み、tomcat 9を使用して、jdk8eclipse neonよ【選択servletはworking.Iがエラーを取得していない:「HTTP Status 500 - Error instantiating servlet class com.example.web.BeerSelectヘッドまずサーブレット&JSPの例は

絵は私の仕事場です。

my workspace

これは私のHTMLコードです。(form.html

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<meta charset="UTF-8"> 
 
<title>beer</title> 
 
</head> 
 
<body> 
 
<h1 align = "center">Beer Selection Page</h1> 
 
<form method="POST" action="SelectBeer.do"> 
 
\t Select beer characteristics<p> 
 
\t Color: 
 
\t <select name="color" size = "1"> 
 
\t \t <option value="light">light</option> 
 
\t \t <option value="amber">amber</option> 
 
\t \t <option value="brown">brown</option> 
 
\t \t <option value="dark">dark</option> 
 
\t </select> 
 
\t <br><br> 
 
\t <center> 
 
\t \t <input type="SUBMIT"> 
 
\t </center> 
 
</form> 
 
</body> 
 
</html>

これは私のweb.xml

<?xml version="1.0" encoding="UTF-8"?> 
 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
 

 
    <servlet> 
 
    \t <servlet-name>Ch3 Beer</servlet-name> 
 
    \t <servlet-class>com.example.web.BeerSelect</servlet-class> 
 
    </servlet> 
 
    
 
    <servlet-mapping> 
 
    \t <servlet-name>Ch3 Beer</servlet-name> 
 
    \t <url-pattern>/SelectBeer.do</url-pattern> 
 
    </servlet-mapping> 
 

 
</web-app>
です

これは私のservletBeerSelect.java

package com.example.web; 
 

 
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; 
 

 

 
@SuppressWarnings("serial") 
 
public class BeerSelect extends HttpServlet{ 
 

 
\t public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException 
 
\t { 
 
\t \t response.setContentType("text/html"); 
 
\t \t PrintWriter out = response.getWriter(); 
 
\t \t 
 
\t \t out.println("Beer Selection Advice<br>"); 
 
\t \t String c = request.getParameter("color"); 
 
\t \t out.println("<br>Got beer color " + c); 
 
\t } 
 
}

.classはgenerated.Whatのそれと間違っていないです。

+0

BeerSelect.classファイルの場所はどこにありますか – Onkar

+0

それはgenerate.iではなく、自動的に生成されると思います。どのように私はそれを日食で生成することができます。 – Saxon

+0

このスタックトレースは、サーバーログから得られるものが多いですか?あなたが示したことは、クラスファイルがないことを示すものではありません。手を使わずに、空白なしでサーブレット名を試してください。 – nitind

答えて

0

[いいえ] .classファイルが作業領域に表示されません。これは単なる提案ですが、あなたはBeerSelect.classファイルを作成する必要があります

javac BeerSelect.java 

これを使用してservlet Javaファイルをコンパイルしてみてください。次にclassesフォルダを作成し、そこに配置します。このように:

WebContent/WEB-INF/classes/com/example/web/BeerSelect.class 

それがまったく役立つかどうかを確認してください。

+0

ありがとう、それは働いた!しかし、どうすればEclipseでそれを生成できますか? – Saxon

+0

EclipseでProject - > Build All(Ctrl + B)を試してみてください。私はそれをコンパイルすべきだと思います。javaファイル – Alan

+0

このボタンはgreyです。私はInternet.iを検索してjavacが動作していないことを確認しました。 – Saxon

0

.classファイルはeclipseには表示されません。また、プロジェクトを作成しているときにクラスファイルフォルダを変更していない可能性もあります。デフォルトはbuild/classesです。希望する場所にファイルを保存しない限り、ファイルフォルダのclassの変更は必須ではありません。あなたの作業領域にはclassというファイルがあります。 あなたのコードには何も間違っていますが、それはうまくいきます。私はホームページとしてhtmlをロードするために作ったちょうど1つの変更。 web.xmlに以下の行を追加しました。

<welcome-file-list> 
    <welcome-file>form.html</welcome-file> 
    </welcome-file-list> 

これはうまくいきます。

+0

しかし、それでも私のコンピュータでは機能しません.... – Saxon

+0

@Saxonこれを試して、プロジェクトをサーバーからアンデプロイしてプロジェクトをクリーンアップしてください。もう一度ビルドし、サーバーを展開して再起動します。そして、インポートエラーがあるかどうか確認してください。 – Nara

+0

ああ、それは大丈夫です。私はクラスパスを設定するのを忘れていて、 "javac"は仕事ではありません。とても大変ありがとうございます。 – Saxon

関連する問題