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 のアイコンフォント ベクター アイコンを使用する方法について

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

推薦する

Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明

vim の動作モードを設定する (一時的) :set (モード情報) :set nu — 行番号を表...

LinkedIn がウェブサイト閲覧を簡素化するためにリニューアル

ビジネス ソーシャル ネットワーキング サイト LinkedIn は最近、ナビゲーション バーとユー...

docker run によって起動されたコンテナがハングしてデータが失われた場合の対処方法

シナリオの説明あるシステムでは、機能サービスはdocker stack deploy xxxで起動し...

URLエスケープエンコーディングの特殊文字に基づいて

目次URL 内の特殊文字URL 特殊文字エスケープ、URL 内の一部の文字には特別な意味があり、基本...

Vue は URL に基づいて非同一オリジンのファイルをどのようにダウンロードするのか

一般的に、URL に基づいてファイルをダウンロードする場合、次の 2 つの解決策があります。 1. ...

コンパイル/サーバーなしでブラウザにCommonJSモジュールを実装する

目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....

Vue ElementUI フォームのフォーム検証

フォーム検証は、フロントエンド開発プロセスで最もよく使用される機能の 1 つです。私の個人的な仕事経...

MySQLプロセスを安全かつ適切にシャットダウンする方法

序文この記事では、mysqld プロセスをシャットダウンするプロセスと、MySQL インスタンスを安...

水平ヒストグラムを作成するための MySQL ソリューション

序文ヒストグラムは、RDBMS によって提供される基本的な統計情報です。最も一般的に使用されるのは、...

「@INC で ExtUtils/MakeMaker.pm が見つかりません」というエラーを解決する

mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...

Node.js ファイルのコピー、フォルダの作成、その他の関連操作

NodeJS は次のファイルをコピーします:通常、小さなファイルのコピー操作では、ストリーム パイプ...

MySqlは指定されたユーザーのデータベースビュークエリ権限を設定します

1. 新しいユーザーを作成します。 1. SQL ステートメントを実行して新しいものを作成します (...

Linuxコマンドとファイル検索の詳しい説明

1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...

Alibaba Cloud で静的ウェブサイトを素早く構築する方法

序文:ジュニアプログラマーとして、私は自分自身の個人ウェブサイトを構築し、それを他の人に見せることを...