質問編集履歴

1 リネーム→リファクタリングの名称変更

tknakamuri

tknakamuri score 34

2016/12/06 15:58  投稿

mavenで作成した webアプリが WTP で動かなくなる。
###やっていること
Eclipse(Neon Pleiades All-in-one)を使用し
** Maven プロジェクト**で Web(war)アプリを
作成しています。
###問題点
簡単なサーブレット1個のプロジェクトを作成し packageフェーズまで
ビルドし、Eclipse の Servers に追加した Tomcat8 に
プロジェクトを追加して「開始」すると、何の問題もなく動きます。
ところが、
・プロジェクトを serversのtomcat8 から除去
・プロジェクトをリネーム
・プロジェクトをF2(リファクタリングの名称変更)でリネーム
・プロジェクトの war を clean/package で再ビルド
・プロジェクトを serversのtomcat8に再追加
・serversのTomcat8を開始
とすると、Tomcat8は問題なく、エラーメッセージもなく起動しますが
サーブレットの URL を叩いても
The requested resource is not available.
と画面に出るだけです。
**プロジェクト名を元に戻しても治りません。**
但し、生成される war を直接 Tomcat8 の webapps に置き、
startup.bat で tomcat8 を起動すれば、サーブレットは問題なく
動きます。
また maven の jettyプラグインや tomcatプラグインでも
正常に動きます。動かないのは WTP を使って起動した場合だけです。
###該当のソースコード
サーブレット
```ここに言語を入力
package info.nakamuri.app.spikes.mavenbasics.hellotest;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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("/Hello")
public class HelloWorld extends HttpServlet {
   private static final long serialVersionUID = 1L;
   public HelloWorld() {
       super();
   }
   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/jsp/hello.jsp");
       rd.forward(request, response);
   }
}
```
JSP(WEB-INF/jsp/hello.jsp)
```ここに言語を入力
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
   <h1>こんにちは</h1>
</body>
</html>
```
###試したこと
同様な試験を struts2 等の各種プロジェクトでも行い、
**warのmavenアプリなら再現する**ことを確認しましたが
いろいろなアプリのエラーメッセージから
どうやら、**クラスパスが正しくない**ことがわかってきました。
おそらく WTP で起動する場合に使うクラスパス関連の設定が壊れて
いると思うのですが、そんな設定がどこにあるのか、未だ見当が
付きません。
ご存知の方が居られましたらよろしくお願いいたします。
  • Eclipse

    2243 questions

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

  • Tomcat

    704 questions

    TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る