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

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

ただいまの
回答率

89.12%

Servlet(サーブレット):WebContentディレクトリ内のファイルがwarに含まれない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,820

salud

score 178

画像は、イメージですが、以下のようなディレクトリ構成のプロジェクトがあります。

イメージ説明

ここで、
① 実行 > Maven Clean と、
② 実行 > Maven install を実行しwarファイルを生成しました。

すると、ビルドは成功するのですが、Tomcatで展開し
ブラウザから確認したとき、index.htmlが404エラーになります。

warファイルをzipにリネームし、解凍したところ、
META-INFとWEB-INF以下のファイルは含まれていたものの、
index.htmlは含まれていませんでした。

ビルドのときの設定かなと思いましたが、原因が分かりません。

また、このプロジェクトは、開発者のPC環境では正常にビルドできていたようで、
私の環境(Java?Tomcat?Eclipseの環境設定?)が原因のようにも思います。

原因に関して、お心当たりのある方おられましたら、回答・コメントお願いします。

また、このように、WebContent内に静的なhtmlやJavaScriptなどのファイルを配置し、
サーブレットを介してアクセスするようなプロジェクトの作り方を解説しているような
Webサイトを教えていただくだけでもかまいません。

重ねてよろしくお願いします。


追記

macOS High Sierra
バージョン 10.13.4

Eclipse IDE for Java Developers
Version: Photon Release (4.8.0)
Build id: 20180619-1200

$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
...

$ /usr/local/tomcat8/bin/version.sh
...
Server version: Apache Tomcat/8.5.33
Server built:   Aug 12 2018 08:20:08 UTC
...


pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>xxxxx</groupId>
    <artifactId>xxxxx</artifactId>
    <version>xxxxx</version>
    <packaging>war</packaging>
    <name>xxxxx</name>
    <description>xxxxx</description>
    <dependencies>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-el-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-i18n-es</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-websocket</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper-el</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-util</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-storeconfig</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jsp-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-tribes</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jni</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-websocket-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-coyote</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina-ha</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-annotations-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jaspic-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina-ant</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-util-scan</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-i18n-ja</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-i18n-fr</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-dbcp</artifactId>
            <version>8.5.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.11.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.11.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>ROOT</finalName>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <warSourceDirectory>WebContent/build/default</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

関係のありそうなWarning

Overriding managed version 1.10 for commons-codec    pom.xml    /yyyyy    行 95    Maven pom ロード問題
Overriding managed version 1.4.196 for h2    pom.xml    /yyyyy    行 135    Maven pom ロード問題
Overriding managed version 2.4.12 for groovy-all    pom.xml    /yyyyy    行 89    Maven pom ロード問題
Overriding managed version 2.6.7.RELEASE for spring-data-rest-core    pom.xml    /yyyyy    行 112    Maven pom ロード問題
Overriding managed version 2.8.10 for jackson-datatype-hibernate4    pom.xml    /yyyyy    行 106    Maven pom ロード問題
Overriding managed version 5.0.12.Final for hibernate-core    pom.xml    /yyyyy    行 60    Maven pom ロード問題
Overriding managed version 5.0.12.Final for hibernate-entitymanager    pom.xml    /yyyyy    行 65    Maven pom ロード問題
Overriding managed version 5.1.44 for mysql-connector-java    pom.xml    /yyyyy    行 75    Maven pom ロード問題
Unknown referenced nature: org.hibernate.eclipse.console.hibernateNature.    .project    /yyyyy    不明    Unknown nature
Unknown referenced nature: org.jboss.tools.cdi.core.cdinature.    .project    /xxxxx    不明    Unknown nature
Unknown referenced nature: org.jboss.tools.jst.web.kb.kbnature.    .project    /xxxxx    不明    Unknown nature
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • salud

    2018/09/03 14:23

    編集しました。

    キャンセル

  • asahina1979

    2018/09/03 14:28

    A-pZ 動的WEB~プロジェクトは mvn 管理ではないです

    キャンセル

  • salud

    2018/09/03 14:31

    「新規プロジェクト」から作成した訳ではなく、他のPCで作ってもらったものを読み込んでいるので、何かしら必要なものがインストール?出来ていない可能性は十分にあります。。

    キャンセル

回答 2

+1

pom.xmlの記載ありがとうございます。
maven-war-pluginの設定とビルドされている構成の不一致が原因のようです。

開発者の方の環境はわかりかねますが、Eclipse WTPのデフォルト構成(WebContent以下に展開される)を指定していますが、maven-war-pluginのデフォルト設定は、src/main/webapp 以下をwarでパックします。

https://maven.apache.org/plugins/maven-war-plugin/war-mojo.html

それに対し、

<warSourceDirectory>WebContent/build/default</warSourceDirectory>

と指定していますので、WebContent/build/default以下の内容を含めようとしているようです。

お使いのプロジェクト構成から察するに、WTPのデフォルト設定をmavenプロジェクトに変換したものですから、warSourceDirectoryを WebContent だけにすると良いでしょう。

<warSourceDirectory>WebContent</warSourceDirectory>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

0

もろもろをビルド前にWebContent/build/default/以下にコピーすることで解決しました。
お騒がせしました。すみません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる