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

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

推薦する

このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)

朝早くに電話で起こされました。あるプロジェクトのデータベースがダウンしていて起動できないとのことでし...

MySQL 起動エラー 1067 および文字セットを変更して再起動した後の無効な回復

公式サイトからmysql-5.6.37-winx64.zipの解凍バージョンをダウンロードし、構成フ...

Linux ファイル管理コマンド例の分析 [表示、閲覧、統計など]

この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...

Centos 6.5 での mysql-community-server. 5.7.18-1.el6 のインストール

次のコマンドを使用して、MySQL Serverがインストールされているかどうかを確認します。 [r...

MySQL の分離レベルの包括的な分析

データベースが同じデータ バッチを同時に追加、削除、および変更すると、ダーティ書き込み、ダーティ読み...

アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)

Web プロジェクトを war にパッケージ化するアイデアにとって最も重要なことは、アトリフィカを...

MySQL インデックス プッシュダウンを 5 分で学ぶ

目次序文インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックス...

Linuxカーネルがプロセスアドレス空間に侵入し、プロセスメモリを変更する方法

プロセス アドレス空間の分離は、現代のオペレーティング システムの注目すべき機能です。これは、「古い...

CSSとHTMLを組み合わせる4つの方法

(1)各HTMLタグには属性スタイルがあり、CSSとHTMLを組み合わせている。 <div s...

PHP クラスにおける static と self の違いの簡単な分析

メソッドが定義されているクラスに応じて、現在のクラスへの静的参照を取得するには、self:: または...

Linux でスレッドを作成するための pthread_create の具体的な使用法

pthread_create関数機能紹介pthread_createはUNIX環境のスレッド作成関数...

Vue の新しい組み込みコンポーネントの使用方法の詳細な説明

目次1. テレポート1.1 テレポートの紹介1.2 テレポートの使用1.3 プレビュー効果2. サス...

FTP、FTPS、SFTPの違いについて簡単に説明します

目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...

MySQL での外部キーの作成、制約、削除

序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...