2019年10月19日土曜日

VSCodeでtomcat Webアプリで404エラー【解決】


自宅でJavaのWebアプリを開発する必要が出てきたのですが、自宅PCは

以前の記事でも書きましたが、スペックも空き容量もカツカツ。

よって、eclipseではなく、軽量と噂のVisual Studio Code(VSCode)を使用することにしました。

色々ハマってバタバタしたので、もし同じような方がいらっしゃれば

参考にしてください。

VSCodeでWebアプリ開発

結論

こちらのサイトを参考に環境構築しました。

spring boot extensionを入れた後「reload」するというのは

 Ctrl + P を押下して、>Reload Window をいれて、その後 Enter のこと

spring initializrの選択は、日本語で書かれてたけど

私の環境では英語だった。

多分以下のものと思いすすめました。





ほかの方法だと。。。


結論のサイトを見つけるまでは、以下で進めていました。
結局解決できず。

部分的にはVSCodeの動きがわかった部分もあるので
念のため残しておきます。

とりあえず試す


この記事より、Javaの開発環境まで用意してくれるものもあり、

TomcatプラグインとTomcat本体は何とか自分で入れて、

JAVA_HOMEの設定も何とかして、

warファイルの作成まではこちらのサイトを参考にさせていただきました。

さあ、デバックだ!

Warパッケージの「src」が出ている。クリック!


・・・

・・・

なぜHTTPステータス 404が。

Tomcatは動いている。

war作成も成功していて、tomcatも認識している。

エラーは500番でなく400番。Javaが動いていない。

原因を調べていきます。

URL指定が足りない?

現在ルートディレクトリしかし指定していないです。

hello.jspがあるので、直接指定してみますが、同じく404エラー。

tomcat managerで調べる

こまったときのtomcat manager!

tomcat_users.xml にアカウント追加して、、、、


???

何かがおかしい。

ログを確認する


VSCode内に出てくる、以下のtomcat起動時のログから、何かわからないか調べてみます。
このログの中で気になる行を発見

情報: CATALINA_BASE:         C:\Users\(ユーザ名)\AppData\Roaming\Code\User\workspaceStorage\(ランダム文字?)\adashen.vscode-tomcat\tomcat\apache-tomcat-8.5.47
[apache-tomcat-8.5.47]: 10 16, 2019 4:10:26 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: CATALINA_HOME:         C:\apache-tomcat-8.5.47

CATALINA_HOMEは自分で配置したtomcatですが、
CATALINA_BASEの位置がとんでもない深いところになっている!

試しにCATALINA_BASEにあるlogフォルダを見ると、、、ログファイルがあった!
※CATALINA_HOMEのlogフォルダにはファイルがありませんでした。

どうもvscodeのtomcatはCATALINA_HOMEのtomcatから、CATALINA_BASEへコピーしてから動かしているようです。
知らなかった、、、

CATALINA_BASEのsrcフォルダに、テスト的にhtmlを置いてみます。
test.htmlには「test  test」とだけ書いています。

このように置いて、、、
http://localhost:8080/src/test.html

でアクセスしてみると、、


出たー!!!!

では、どうやってwarファイルをCATALINA_BASEのsrcフォルダに毎回持っていくか。。。


ネットで情報収集


こちらのサイトで似たような状況になっている人がいました。

@dsampe The solution to your issue was actually solved in this thread:
https://github.com/adashen/vscode-tomcat/issues/33
Basically, you have to add a reference to the jdk/bin folder to your system path. If you are on Windows, make an entry in the environmental variables under the User section. That solved the problem for me.

jdk/binのパスを追加する必要がある?

やってなかったかな。。

。。。

「c:\jdk-13\bin」は手動で入れたJDKでしたが、VSCodeのjava開発環境があるということで、競合しないよう手動で削除していました。

ユーザ環境変数には確かにJDKのbinのパスは通っていませんでした!

%JAVA_HOME%にはJDKのパスが入っていたので以下を追加

%JAVA_HOME%\bin
うまくいくかな。。。

だめだ。まだ出ない。

まとめ

結局「ほかの方法」だと解決できず、「結論」のサイトの方法で解決しました。

私の環境や知識不足で「ほかの方法」が有効活用できなかっただけだとは思いますが、
調べて方向転換までに3日間ほどかかってしまいました。

しかし途中でVSCodeの動き(javaやtomcatを本体からコピーして使っている)も分かり有意義でした。

これからVSCodeでWebアプリケーションを開発される方に、少しでも参考になればと思います。