スポンサーリンク
GitBucketを"Apache Tomcat"(Tomcat)でサービス起動させて利用するため、インストール作業を進めていましたが、「http://localhost:8080/gitbucket/」にはアクセスできない問題にぶち当たりました。
具体的には「http://localhost:8080/」にはアクセスできるけど、「http://localhost:8080/gitbucket/」にアクセスすると「HTTPステータス 404 – 見つかりません。」と表示されGitBucketが起動しない問題です。
この調査を家で10時間程度行い、原因が分かってきましたので、紹介したいと思います。
行ったこと
以下のことを行いました。
- "Tomcat 10"のダウンロードのページ(https://tomcat.apache.org/download-10.cgi)で「10.0.21」>「Binary Distributions」>「Core」>「32-bit/64-bit Windows Service Installer」をダウンロードし、"Tomcat 10"のインストールを行う。※インストールで選択するものはデフォルトのものです。インストール完了時の画面は「Run Apache Tomcat」「Show Readme」のチェックはOFFにしました。
- 「サービス」アプリを起動し「Apache Tomcat 10.0 Tomcat10」を実行する。
- Google Chromeで「http://localhost:8080/」を開き、正常にTomcatのメニュー画面が表示されることを確認する。
- Tomcatのメニュー画面の「右側」の「Manager App」ボタンをクリックし、「Tomcat Webアプリケーションマネージャ」画面を開く。
- 「C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps」に「gitbucket.war」を配置(デプロイ)し同階層に「gitbucket」フォルダが作成されることを確認する。
- 「サービス」アプリを起動し「Apache Tomcat 10.0 Tomcat10」のサービスを再起動する。
- 「Tomcat Webアプリケーションマネージャ」画面で「アプリケーション」セクションの「/gitbucket」の「実行中」列が「true」か「false」のどちらかを確認する。もしも、「Tomcat Webアプリケーションマネージャ」画面の「アプリケーション」セクションの「実行中」列が「fa;se」で、「コマンド」列の「起動」ボタンを押せる場合は押す。「起動」ボタンを押すと、同画面の「メッセージ」にメッセージが表示される。
ここまで行うと下図の左側のようになりました。(=左側は「Tomcat 10(10.0.21)」のものです。)表示された文字列は「HTTPステータス 404 – 見つかりません。」「タイプ:ステータスレポート」「メッセージ:要求されたリソース [/gitbucket/] は利用できません。」「説明:オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。」です。
下図の右側は「Tomcat 9(9.0.63)」を同様の手順で行ったものです。
また上記の手順に記載しました「Tomcat Webアプリケーションマネージャ」画面の画像は以下です。左側の「Tomcat 10(10.0.21)」の場合は「起動」ボタンを押した後、「メッセージ」欄に「FAIL - コンテキストパス [/gitbucket] のアプリケーションが起動できません」と表示されます。こちらも右側は「Tomcat 9(9.0.63)」のものです。
調査結果
比較ソフト「WinMerge」で次のフォルダを比較し下図の結果となりました。
- 「C:\Program Files\Apache Software Foundation\Tomcat 9.0」
- 「C:\Program Files\Apache Software Foundation\Tomcat 10.0」
「logs」フォルダ内のファイルで「Caused by: java.」と含まれる箇所をGrep検索すると次のようになりました。
Tomcat 10.0\logs\localhost.2022-05-29.log(42,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionListener
Tomcat 10.0\logs\localhost.2022-05-29.log(87,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
Tomcat 10.0\logs\localhost.2022-05-29.log(132,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
Tomcat 10.0\logs\localhost.2022-05-29.log(177,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
Tomcat 10.0\logs\localhost.2022-05-29.log(232,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionListener
Tomcat 10.0\logs\localhost.2022-05-29.log(286,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
Tomcat 10.0\logs\localhost.2022-05-29.log(340,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
Tomcat 10.0\logs\localhost.2022-05-29.log(394,2) [UTF-8]: Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
気になった箇所は「\Tomcat 10.0\work\Catalina\localhost\ROOT\org\apache\jsp\index_jsp.java」の違いです。
「Tomcat 9→javax.servlet」、「Tomcat 10→jakarta.servlet」のようにインポートしています。
恐らく、下図のように「gitbucket」のフォルダ内を見ていると思います。
「gitbucket」フォルダには「javax」フォルダはありますが、「jakarta」フォルダはないため、「java.lang.ClassNotFoundException」を出力し、404エラーになっていると思います。
裏付けるもの
「https://github.com/gitbucket/gitbucket」では「Installation」のところに「Note that GitBucket doesn't support Jakarta EE yet.」(GitBucketはまだJakartaEEをサポートしていないことに注意してください。)と記載があります。
「https://tomcat.apache.org/index.html」では「Tomcat 10」以降のものは「Jakarta EE」に対応していると記載があります。
「Jakarta EE」をインストールできれば、改善されるか検証も出来たのですが、本日は出来ませんでした。
参考サイト/関連サイト
https://tomcat.apache.org/index.html
https://github.com/gitbucket/gitbucket/blob/master/README.md
最後までお付き合いいただきありがとうございます!
この情報が誰かの役にたてれば幸いです。