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

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

推薦する

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

<br />一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われていま...

Vite2とVue3を使用したウェブサイトの国際化を実現するプロセス全体

目次序文vue-i18nをインストールするロケールの設定getLangs.js の実装i18nインス...

Vueフィルターとカスタム命令の使用

目次フィルター01.とは02. やり方(1)フィルターを定義する(2)使用方法(3)フィルタパラメー...

webpackでvue環境を構築する際の異常なエラーを解決する

目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...

JS と Nodejs におけるイベント駆動型開発についての簡単な説明

目次イベント駆動型とパブリッシュ・サブスクライブ型ブラウザの JavaScript ではイベント駆動...

選択ドロップダウンメニューのテキストを左右にスクロールするように設定する

marquee タグを使用してフォントのスクロールを設定したいです。コードは次のように記述しましたが...

HTML での非同期ファイルアップロードの例

コードをコピーコードは次のとおりです。 <form action="/hehe&qu...

mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

コアコード /*-------------------------------- 2つ以上のフィール...

Vue でよく使われる高階関数と包括的な例

1. 配列のよく使われる高階関数配列があり、その配列に対して次の操作を実行したいとします。 100 ...

Linux でジャンプ サーバー経由でリモート サーバーに接続し、ファイルを転送する方法

最近、Linux ホストに環境を展開する際に多くの問題に遭遇しました。最初の問題は、ジャンプ サーバ...

Linux で Hadoop クラスターをインストールするための詳細な手順

目次1. usrディレクトリにHadoopディレクトリを作成し、インストールパッケージをそのディレク...

クリーンで美しいウェブデザインのための4つの原則

この記事では、 Webデザインに関連するこれら4 つの原則について説明します。これら4 つの原則を念...

MySQL トリガー構文とアプリケーション例

この記事では、例を使用して MySQL トリガーの構文とアプリケーションを説明します。ご参考までに、...

uniapp エントリーレベル nvue クライミングピット記録の分析

目次序文こんにちは世界画像 境界線の半径を設定する実ピクセルを設定する外部CSSをインポートttfフ...

テーブルを使用する場合と CSS を使用する場合 (経験の共有)

TW のメインテキスト ページは、以前は小さなモニターと低解像度のユーザーを考慮して幅が 850 ピ...