Tomcatソースコードをideaにインポートする方法

Tomcatソースコードをideaにインポートする方法

1. Tomcatコードをダウンロードする

この記事では9.0ブランチを選択します。このバージョンのサーブレットは、javaxから始まるgithubにまだあります。

2. ダウンロード後のディレクトリ構造

ここに画像の説明を挿入

3. ソースコードは ant を使用してビルドされます (ここでは代わりに pom が使用されます)

<プロジェクト 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">
  <モデルバージョン>4.0.0</モデルバージョン>

  <グループ ID>org.apache.tomcat</グループ ID>
  <artifactId>トムキャット</artifactId>
  <name>トムキャット</name>
  <バージョン>9.0.19</バージョン>

  <プロパティ>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </プロパティ>
  <依存関係>
    <依存関係>
      <groupId>ジュニット</groupId>
      <artifactId>junit</artifactId>
      <バージョン>4.12</バージョン>
      <scope>テスト</scope>
    </依存関係>
    <依存関係>
      <グループ ID> org.apache.ant</グループ ID>
      <artifactId>アリ</artifactId>
      <バージョン>1.10.11</バージョン>
    </依存関係>
    <依存関係>
      <グループID>wsdl4j</グループID>
      <アーティファクトID>wsdl4j</アーティファクトID>
      <バージョン>1.6.3</バージョン>
    </依存関係>

    <!-- https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api -->
    <依存関係>
      <グループ ID>javax.xml.soap</グループ ID>
      <artifactId>javax.xml.soap-api</artifactId>
      <バージョン>1.4.0</バージョン>
    </依存関係>

    <依存関係>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jaxrpc_1.1_spec</artifactId>
      <バージョン>2.1</バージョン>
    </依存関係>

    <依存関係>
      <グループ ID>org.eclipse.jdt</グループ ID>
      <artifactId>ecj</artifactId>
      <バージョン>3.17.0</バージョン>
    </依存関係>


    <依存関係>
      <groupId>org.easymock</groupId>
      <artifactId>イージーモック</artifactId>
      <バージョン>4.0.2</バージョン>
      <scope>テスト</scope>
    </依存関係>

    <依存関係>
      <groupId>biz.aQute.bnd</groupId>
      <artifactId>biz.aQute.bndlib</artifactId>
      <バージョン>5.2.0</バージョン>
      <scope>提供</scope>
    </依存関係>

    <依存関係>
      <groupId>com.unboundid</groupId>
      <artifactId> バインドされていない ldapsdk</artifactId>
      <バージョン>3.2.0</バージョン>
    </依存関係>
  </依存関係>

</プロジェクト>

ideaを使用して直接再インポートし、一時的にjdk 1.8を選択します。

4. 問題解決

4.1 コンソールの文字化け

情報: 少なくとも 1 つの JAR が TLD に対してスキャンされましたが、まだ TLD が含まれていません。 このロガーのデバッグ ログ記録を有効にすると、スキャンされたが TLD が見つからなかった JAR の完全なリストを取得できます。 スキャン中に不要な JAR をスキップすると、起動時間と JSP コンパイル時間が短縮されます。
2021年9月29日 午前3時52分17秒 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
警告: [SHA1PRNG] を使用してセッション ID を生成するための SecureRandom インスタンスの作成に [149] ミリ秒かかりました。

2021年9月29日 3:52:17 文字化け conf/logging.properties のエンコードを変更 (現在はデフォルトで utf-8 に設定されていますが、基本的に変更はありません) 警告: [SHA1PRNG] を使用してセッション ID 生成用の SecureRandom インスタンスを作成するのに [149] ミリ秒かかりました 文字化け

ここで文字化けが発生する主な原因は、プロパティ ファイルが文字化けしていることです。Tomcat は、URL.openStream を使用して構成ファイルを読み取り、次に properties.load メソッドを使用してシステムの方法を使用するため、文字化けが発生します。

解決

2つの国際化ファイルLocalizerとStringManagerを読み込んで書き換える

4.2 アクセス 8080 でエラーが報告される: jsp およびその他のクラスが見つかりません

org.apache.catalina.startup.ContextConfig#configureStart メソッドにコード行を追加します //TODO 手動で追加しました context.addServletContainerInitializer(new JasperInitializer(), null); 

ここに画像の説明を挿入

5. localhost:8080にアクセスします。

ここに画像の説明を挿入

以上

他のコンパイル オプションがある場合、jdk11-16 は他のエラーを直接コメント アウトして正常に解決できることに注意してください。

Tomcat ソースコードを idea にインポートする方法に関するこの記事はこれで終わりです。Tomcat ソースコードを idea にインポートする方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Idea で Tomcat のソースコードデバッグを開始し、デバッグのために Tomcat に入る方法
  • IDEA作成Tomcat8ソースコードプロジェクトプロセスの詳細な説明

<<:  Vue で Alibaba のアイコンフォント ベクター アイコンを使用する方法について

>>:  ウェブページの画像最適化ツールと使用方法のヒントの共有

推薦する

Vueコンポーネント通信のさまざまな方法の詳細な説明

目次1. 父から息子へ2. 息子から父へ3. 親子関係のないコンポーネントの値の転送4. ヴュークス...

MySQLとSpringの自動コミットの詳細な説明

1 MySQLの自動コミット設定MySQL はデフォルトで自動的にコミットします。つまり、各 DML...

JS 開発効率を上げる4つの超実践的なヒント

目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...

Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

Vueのプラグインの仕組みとインストールの詳細を深く理解する

序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 Vue....

アバター変更機能を実装するJavaScript

この記事では、アバター変更機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...

MySQLデータベースの圧縮バージョンのインストールと設定に関する詳細なチュートリアル

目次1. MySQLをダウンロードする2. 圧縮パッケージを解凍する3. MySQLを初期化する4....

MySQL で lower_case_table_names を記録する際の落とし穴の詳細な説明

1 原因プロジェクトがデータベースを移行して再起動した後、「T_AAAテーブルが存在しません」という...

Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...

CSS3 のテキストとフォントの新しい設定

テキストシャドウテキストシャドウ: 水平オフセット 垂直オフセット ぼかし色互換性: IE10+ &...

リモート接続を許可するようにMySQLを変更する方法

MySQLリモート接続の問題に関しては、会社で働いているときに誰かのコンピュータに保存されているMy...

Centos7 での MySQL 5.7.20 のインストールと設定に関する詳細なチュートリアル

1. 公式 Web サイトから MySQL 5.7 インストール パッケージ (mysql-5.7....

CSS で波の効果を作成するためのアイデア

以前、純粋な CSS を使用して波の効果を実現する方法をいくつか紹介しました。それらについては、次の...

MYSQL の解凍版における中国語の文字化け問題の解決方法

MYSQLの解凍バージョンがインストールされます1: 解凍後、my.ini ファイルをコピーし、バイ...