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のレプリケーションとチューニングの原則と方法を分析する

1. はじめにMySQL にはレプリケーション ソリューションが付属しており、次のような利点がありま...

Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

簡単に言うと、今日は Gitlab-CI を使用してリモート サーバーに自動的にデプロイする方法につ...

React コードを共有するためのベストプラクティス

プロジェクトがある程度複雑になると、必然的にロジックの再利用の問題に直面することになります。 Rea...

Mysql 8.0.17 winx64バージョンのインストール中に発生した問題を解決する

1. my.iniファイルを手動で作成して追加する # クライアントセクション # --------...

MySQL のストレージ エンジンの違いと比較

MyISAM ストレージエンジンMyISAM は ISAM ストレージ エンジンに基づいており、それ...

Dockerコンテナ内のホストのホスト名が取得できない問題の解決方法

Node.js環境でテストが通っています。他の言語でも同様です。環境変数を取得する方法を使うだけです...

lastInfdexOf 関数の MySQL 実装例

MySQL では lastIndexOf に似た関数を使用する必要がある場合もありますが、すぐに使用...

Youku 動画から 30 秒の広告コードを削除する 2 つの方法

誰もがこんな気持ちになったことがあると思います。30 秒の広告が入った動画を見ると、とても不快に感じ...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

MySQL ストアド プロシージャの作成と呼び出しの詳細な説明

目次序文ストアドプロシージャ: 1. ストアドプロシージャの作成と呼び出し1. ストアドプロシージャ...

Linux での wget コマンドの基本的な使い方

目次序文1. wgetを使用して単一のファイルをダウンロードする2. wget -Oを使用してダウン...

React Nativeがシミュレータにリンクできない件について

React Native は、現在人気のオープンソース JavaScript ライブラリ React...

MySQLデータベースの共通操作スキルのまとめ

この記事では、MySQL データベースの一般的な操作テクニックをまとめます。ご参考までに、詳細は以下...

VirtualBoxにOpenSuseをインストールする方法

仮想マシンはホストマシンにインストールされます。 CPU とメモリはホスト マシンと共有する必要があ...

フォームデータを取得するための Node.js メソッドの 3 つの例

序文Nodejs はサーバーサイド言語です。開発中、登録やログインなどでは、判断のためにフォームを通...