質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

4回答

21914閲覧

JAVA eclipse Servletが実行できない

earnest_gay

総合スコア615

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1グッド

0クリップ

投稿2016/09/02 16:43

編集2016/09/03 05:06

JAVAの「スッキリわかるサーブレット&JSP入門」という書籍で勉強中なのですが、まず、tomcatで動作確認するために下記のサンプルを試したらできました。

eclipseでtomcatをサーバーにしてやっています。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> hello! </body> </html>

これを実行すると、、、

イメージ説明

そのまま書籍の通り進めていくサーブレットとやらを使ってみるのですが、下記コードを実行しても404が返ってきます。

package servlet; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/SampleServlet") public class SampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 運勢をランダムで決定 String[] luckArray = { "超スッキリ", "スッキリ", "最悪" }; // 0以上3未満の整数を乱数で生成 int index = (int) (Math.random() * 3); String luck = luckArray[index]; // 実行日を取得 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String today = sdf.format(date); // HTMLを出力 response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>スッキリ占い</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>" + today + "の運勢は" + luck + "です</p>"); out.println("</body>"); out.println("</html>"); } }

上記を実行すると、、、
404エラーが
イメージ説明

パスが違うようなので、
http://localhost:8080/example/SampleServlet.java
と、手動でアクセスしようとすると、、、

またもや404エラー。

イメージ説明

まだ第3章でしょっぱなからつまづいているのですが、何がいけないのでしょうか?

この土日で終わらせたいのに、、、

プロジェクトは、動的WEBプロジェクトです。
動的WEBプロジェクト->新規->JSPファイル、で作りました。
このあたりは書籍の通りなので間違いないと思うのですが、、、

土日で申し訳ないんですが、
教えていただけませんでしょうか。

〜追記〜
eclipseではエディタの左に×がついてるのが気になります。
×があるのはこれで全部ですl。

イメージ説明

~追記~

Tomcatは最新の方がいいと思って9にしていたんですが、8にしました。
もう一度、最初から書籍の通りにMacとWinでやったら下記コードの実行をMacではできました。

※これはWinのキャプチャです。
イメージ説明

Winでは、昨日では

import javax.servlet.annotation.WebServlet;
@WebServlet("/SampleServlet")
に×がついていました。

今日起きて、やってみると、何故か9行目が読み込めていました。何故なのか、、、

しかし、14行目のエラーは変わらずです。

Macでは問題なくできています。

Macのeclipseは、
http://mergedoc.osdn.jp/ではなく
http://www.eclipse.org/から本体だけをDLして
http://tomcat.apache.org/download-80.cgi#8.0.36を別途DLしてeclipse.app内の適当なところに設置して
それを使っています。

Winのeclipseは、
http://mergedoc.osdn.jp/から取得し、
最初から
C:\Eclipse\pleiades_neon_4.6\tomcat\8
に入っているものを使っています。

os:Win&Mac
eclipse:4.6 neon
tomcat:8

mit0223👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

サーバーとサーバーアダプターはバージョンを合わせてもらえますか?

一番手っ取り早いのが書籍のバージョンに合わせてください。

tomcat-6
tomcat-7
tomcat-8

各マイナーバージョンはこちら

tomcat-6
tomcat-7
tomcat-8

投稿2016/09/03 01:42

編集2016/09/03 03:12
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/03 05:10

ありがとうございます。 色々試して少し状況が変わっており、追記させてもらっておりますので、見ていただけないでしょうか。 MacとWinで試しているのですが、 Macでは実行できました。 Tomcatも両OSとも8で試しているので、Winだけerrorがでてしまうのは、 eclipseの構造の違いなのかなと思うのですが、どうなのでしょうか。
退会済みユーザー

退会済みユーザー

2016/09/03 05:25 編集

別の所でのコメントでライブラリが「Apache Tomcat v6.0」となっているといってますが それが原因ですね。 別のサーバーランタイムが紐付いてます。 アノテーションが利用可能な場合「Apache Tomcat v7.0」または「Apache Tomcat v8.0」となっている必要があります。
earnest_gay

2016/09/03 11:14

ありがとうございます。 tomcat8を使っているつもりが実際には6が起動しているという解釈でよろしいでしょうか?
earnest_gay

2016/09/03 11:28

動的WEBプロジェクトを作る際にランタイムターゲットが MacとWinでは、デフォルトが違うため Winのサーバーをtomcat8にしていても ターゲットが6になっていたため、おかしかったと思います。 eclipseが同じverでも本家とpladeusから入手したものでは、デフォルト値など若干違いがあるようで同じ手順でやっていてもちゃんと確認しないと異なる結果になってきそうです、、、 ありがとうございました!
guest

0

サーブレットの実行をするURLが間違っているようです。
サーブレットを実行するURLは、@WebServletに記述した値です。

他にもjavax.servletでコンパイルエラーが出ている状況なので、動的Webプロジェクトで作成したならば、サーバとして選択したTomcatへのビルドパスが正しく設定されていないようです。

正しく動的Webプロジェクトを作り、サーバも設定していれば、以下の図のようになります。

動的Webプロジェクトでサーブレットを作った後のEclipse

確認する箇所は次のとおりです。

  • Javaリソース > ライブラリ > Apache Tomcat8.0(......) が存在しているか
  • Servers に ローカルホストのTomcat8(......) が存在しているか
  • 「サーバ」タブに、ローカルホストのTomcat8(....)が存在しているか
  • これらの設定後にコンパイルエラーが出ている場合は、修正後にプロジェクトをクリーン→自動的にビルドをEclipseの設定で行う。

投稿2016/09/03 02:43

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/03 03:34

多分、質問者は tomcat 8 Adapter で tomcat 9 (評価版 tomcat) を利用しているから現状になっていると思われる。 
A-pZ

2016/09/03 04:33

WTP使っているようですし、Tomcat9ランタイムが初期インストールに含まれていないので、まずは動くTomcat8のランタイムにするべきでしょうね。コメントありがとうございます。
guest

0

プロジェクトは、動的WEBプロジェクトです。

動的WEBプロジェクト->新規->JSPファイル、で作りました。
このあたりは書籍の通りなので間違いないと思うのですが、、

作成されているのはサーブレットだと思うのですが、新規→JSPファイルで作成したのでしょうか?
このソースの場合、新規→Servlet で作成する必要があります。

普通にやれば、 javax.servlet のような基本的なパッケージにビルドパスが通っていないなんてことはないのですが、プロジェクト→プロパティの中の Java Build Path には何が見えてますか? また、そこに☓はついてませんか?

投稿2016/09/03 00:35

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/03 05:05

すいません。 こちらの記載ミスで実際は 動的WEBプロジェクト->新規->サーブレット です。 Java Build Pathには下記が通っています。 example/src JRE システム・ライブラリー[java6] Apache Tomcat v6.0[Tomcat6(Java6)] Web App ライブラリー EARライブラリー 今日試してみると少し状況が変わっており、追記していますので見ていただけませんでしょうか。
guest

0

デバッグの仕方、特にエラーログ、エラーメッセージ等を勉強したらいいですよ。

投稿2016/09/02 16:51

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/09/02 16:57

importしたはいいけどそんなのない というエラーが出ているんです、、、
yona

2016/09/02 17:03

だったらそれを質問に書きましょう。時間の無駄になりますよ。 クラスパスの設定に抜けがあるんじゃないですか、前の章に戻って見直した方がいいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問