サイト検索
検索
サイトメニュー
Menu
RTB SoftLab ラテベ ソフトラボ (ラテベラボ)
私の知っているソフトの操作を解りやすく、解説していきます。
サイト検索
検索
サイトメニュー
Menu

投稿日:2020年10月6日

更新日:2020年9月29日

今までとこれからの内容

前回で、Mavenプロジェクトを作成して、pom.xmlや各ソースを配置する予定でしたが、長くなりそうなので、ページを分けました。
前回までは、こちらになります。

VSCode + JAVA + TOMCAT MAVEN 開発環境

前回の続きなので、目標は、そのままとしています。

前回の目標は、VSCodeも懸案!

  1. VSCode赤表示は、エラーの事?
    1. これは、プロジェクトが原因と感じています。
  2. ターミナルにでてきたけどブラウザはどうするの?
    1. まず、ビルドが出来ていないので、ビルドが出来ることが必要?(たぶん)
      1. これは、赤字のエラーに関すると思える。
      2. よって、プロジェクトの関係かと思える。
    2. ビルドが出来れば、VsCodeで、デバッグができるかも!

今回は、前回の目標に加えて!

  1. Mavenのプロジェクト作成。
  2. Mavenでのプロジェクトのビルド
  3. Mavenを使用てのデバッグ

たぶん、このぐらいではないでしょうか!?

前回目標を達成しなかったので、増えましたね~(笑)
でも、頑張るしかないので、頑張ります。
たぶん、難儀ですよ~(笑)

さて、続きの作業を早速開始!

Maven、pom.xmlの修正&プログラムの変更!

とりあえず、一度作成したJavaの勉強ファイルなどをコピーして、環境を整えていきたいと思います。

これがいいと思います。
Jave+Tomcatで、始めてのクライアントとサーバの通信

ここまでが前回までです。

上記のプログラム一式をとりあえず、コピーします。
D:\Tomcat\Tomcat\webapps\Helloの中身を!

D:\Tomcat\MavenPrj\mavenprj\src\mainへコピー

ソースをコピーした直後
ソースをコピーした直後

ビルドは、左下のMaven名を右クリックして出来ます。
とりあえず、「compile」を選びます。

ビルドが成功したみたいです。
(ビルドエラーが出てきてほしかったのですが、致し方ありません)
ビルドエラーが出てきた場合は、pom.xmlだと思いますので、後回しでOKです。

コンパイル成功
コンパイル成功

但し、問題が発生しているみたいです。

問題が4件発生しています。
問題が4件発生しています。

簡単なものは、先につぶしていきます。
(内容によっては、pom.xmlになりますので、後にします)

  • web.xml
    • The content of element type “web-app” must match “(icon?,display-name?,description?,distributable?,context-param,filter,filter-mapping,listener,servlet,servlet-mapping,session-config?,mime-mapping,welcome-file-list?,error-page,taglib,resource-env-ref,resource-ref,security-constraint,login-config?,security-role,env-entry,ejb-ref,ejb-local-ref)”.
    • これは、web.xmlの書き方が悪いみたいです。
    • こんな感じに、順番を入れ替えれば、直るみたいです。
    • この時点で、問題から直ぐ消えてなくなります。
    • ただ、これでは、解りにくいので、私は、DOCTYPEをコメントアウトしました。
      • 必要なのかは、解っていません(笑)
      • ついでに、言語コードも追加しました。
  • mavenprj
    • Build path specifies execution environment JavaSE-1.7. There are no JREs installed in the workspace that are strictly compatible with this environment.
    • The compiler compliance specified is 1.7 but a JRE 1.8 is used
    • これらは、pom.xmlになりますので、後回しにします。
  • RequestServ.java
    • RequestServ.java is not on the classpath of project mavenprj, only syntax errors are reported
    • これは、ソースの置き場所が悪いと思えます。とりあえず、App.javaののフィルダーに移しました。
    • そして、ソースの先頭に、package mavenpkj;を追加しました。
    • そうすると!エラーが19件に増えましたwww^^;
      問題が増えた状態
      • inpoerが無視されているのが原因です。
      • これも、pom.xmlなので、後回しにします。

とりあえず、java関係は修正しました。
続いては、pom.xmlを修正しながら、分析していきます。

pom.xmlを修正&分析

前回分析した内容を元に、修正していきます。
前回の分析は、VSCodeの環境見直しがそろそろ必要?のMavenプロジェクト作成のまとめにあります。

分析しながら、コメントをつけていけば、次に使えるのでお勧めします。
さて、コメントをドシドシつけながら、解説します。

  • maven.compiler.source
    • javaのバージョンなので、1.7から1.8に変更しました。
  • maven.compiler.target
    • javaのバージョンなので、1.7から1.8に変更しました。
  • 保存を行うと!下記のメッセージが出てくることがあります。
    • 無視しても構いませんが、google先生によると!
      「Google 翻訳 ビルドファイルが変更されました。 Javaクラスパス/構成を同期しますか?」ということなので、「Now」で問題ありません。
    • この時点で、いくつかの問題が消えるはずです♪

こんな感じで、修正していきます。

pom.xmlの修正(基本)
pom.xmlの修正(基本)

<dependencies>が出てきました。これは大事なので、次の段落とします。

pom.xmlの<dependencies>の追加

これは、inportなどのjarについて記載する場所になります。
ただ、何をどうやって追加するのが解りませんでした^^;
たまたまVsCodeをつついていて、解ったのですが、VsCodeのコマンドで追加が出来るみたいです。

今回は、import javax.servlet.*;がエラーになっていましたので、
こちらの追加を行うことにします。
(.netでいうと、名前の解決が出来たいない状態ですね!)

では、コマンド(Ctrl+Shit+P)を下記で、検索します。

  • 「maven add」で検索!
  • 「Maven: Add a dependency…」を選択します。
  • 「javax.servlet」を入力して、Enterを押します。
    • そうすると、下記の選択が出てきます。
    • その中から選ぶことになりますが、この中から、何を選べばいいのか?
      又、選ばなければいけないものは、どうやって選定するのかがよく解っていません^^;
    • ちなみに、表示されている、一番したを選びました。
      • 「javax.servlet-api javax.servlet
    • すると、pom.xmlに下記が追加されるはずです。
      • だた、これでは、バージョンが異なりますので、手動で修正を行います。
      • servletのバージョンは、こちらに記載されています。
      • tomcatが、8.5xなので、servletは、3.1.0になります♪
  • この時点でエラーが、一気に減るはずです!
javax.servletを追加後
javax.servletを追加後

さて、残った問題(ワーニング)もついでに消していきましょう!

  • HelloServlet.java
    • The serializable class HelloServlet does not declare a static final serialVersionUID field of type long
      • google翻訳を使っても、意味わかりませんね^^;
      • シリアル№を追加しなさいって言っています。
        • 継承(親クラスを実装)している場合に出るそうです。
          • よは、親との整合性が崩れた時にエラーにしたりするみたいです。
      • public class HelloServletにカーソルを持っていき、電球マークから、serialVersionUIDを追加することで解決します。
  • RequestServ.java
    • Enumeration is a raw type. References to generic type Enumeration should be parameterized
      • google翻訳を使っても、意味わかりませんね^^;
      • .netの経験で、Enumってことは解ります。
      • これはたぶん!変数の型を指定しなさいということだと思います。
      • カーソルを合わせると!<String>が見えますので、下記にしました。
      • 変更前
        • Enumeration headers = req.getHeaderNames();
      • 変更後
        • Enumeration<String> headers = req.getHeaderNames();
    • The value of the local variable url is not used
      • これは、google先生がいなくても解りますね♪
      • 使用していない変数も教えてくれるとは、いいですね♪
        • コメントにしました。

これで、問題はなしになりました(祝♪)

問題がなくなった状態
問題がなくなった状態

さらに整理を進めます

サンプルが色々ありましたので、削除等を行っていきます。

  • testディレクトリ
    • このディレクトリで、testと分けてテストが出来るのだろう!ということはなんとなく解ります。
    • 時に、今は必要としていないので、削除してみます。
  • その他
  • ちょっと違う所
    • webappのフィルダを作成し、ここに、jspやhtml関係(WEB-INFを含む)を入れます。
    • webappのフィルダは、下記になります。
      • D:\Tomcat\MavenPrj\mavenprj\src\main\webapp
      • webappは、Mavenのディレクトリの仕様かと思われます。
  • pom.xmlの変更
    • 最後に、このままだと、jarファイルを出力するので、pom.xmlに下記を追加します。
      • <packaging>war</packaging>

で、出来たファイルがこちらになります。

整理整頓後
整理整頓後
<packaging>war</packaging>の追加も見れます。

やっと出来ると思います!デバッグテスト!

さて、やっとデバッグテストが出来ます。(祈ります(笑))

ブレイクポイントは、RequestServ.javaに設定しました。

手順は、下記になります。

  1. 左下のMavenプロジェクトを右クリック。
  2. 「package」を選択します。
    • エラーがない場合は、ターミナルに緑の文字で下記が出力されます。
      • BUILD SUCCESS
    • エラーが出た場合は、修正して下さい。
  3. 次に、左メニューの「TOMCAT SERVERS」を開きます。
    • 右へマウスを持っていくと、プラスが表示されるので、クリックします。
    • Tomcatのある場所を指定します。
      • D:\Tomcat\Tomcat
    • 次に登録されたTomcatを右クリックを行い、「Debug War Package」を選択します。
      Tomcat War デバッグ 起動
    • ダイアログが表示されますので、そこで、warファイルを選びます。
      • warファイルは、Mavenのpackage作成時に、下記に出来ているはずです。
        • フォルダ:D:\Tomcat\MavenPrj\mavenprj\target
        • ファイル:mavenprj-1.0-SNAPSHOT.war
  4. これで、warファイルのデバッグが開始された状態になります。
    • 次に、エクプローラに戻って、再度Tomcatを右クリック行い、
      「Open in Browser」を選びます。
  5. ブラウザが表示されていると思います。
  6. 下にwarファイルのリンクが表示されていますので、クリックします。
  7. この時点で、404のエラーになると思います。(笑)
  8. URLの最後にform.htmlを追加します。
    1. http://localhost:8080/mavenprj-1.0-SNAPSHOT/form.html
      が正解です。
  9. 後は、VSCode + JAVA + TOMCAT MAVEN 開発環境の時にテストしたように!
    1. 適当にチェックをつける!
    2. サブミットボタンを押す!

その結果が!

ブレイクポイントで、きちんと止まった!
ブレイクポイントで、きちんと止まった!

ブレイクポイントで、きちんと止まりましたね♪
さらに、JAVAで作成されたPGの表示も問題ありませんね♪

クライアントからJavaに送信された結果!
クライアントからJavaに送信された結果!

これで、基本的には、デバッグ環境が整ったと思います♪

ハマった所

今回は、勉強して入ったので、特にないといってもいいかも知れません!
勉強には、時間を使いましたが(笑)。

参考サイト

ありがとうございました♪

残っている懸案

分類懸案結論完了
VSCodeターミナルにでてきたけど、
ブラウザはどうするの?
この記事で完了完了
javathrows ServletException, IOException 
VSCodeVSCode赤表示は、エラーの事?この記事で完了完了
これからの懸案一覧

今回のまとめ

今回のまとめは!

  • まとめなければいけないことが、沢山ありすぎです^^;
    よって、次回とします。

さて、がんばりますよ~♪
(でも、ハマりたくないよ~(笑))

RTB カレンダー

27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
通販サイト(ECサイト)デモへ
ラテベラボブログへ
ナノシスへ

RTBアーカイブ(旧 Widget 版)

RTB ポストランキング (旧)

RTBアーカイブ(旧 Widget 版)