TomcatのソースコードがEclipseにインポートされ、実行されています



Tomcat Source Code Is Imported Into Eclipse



今日、Tomcatソースコードのインポート、コンパイル、実行に成功しました。これは、次の3つのドキュメントへの主な参照であり、直接コピーされたものもあれば、リンクを書き込むだけのものもあります。それらは異なるソースコードメソッドをインポートし、コンパイルプロセス中に発生した問題を含むものもあります。それらを解決する方法は?後でそれらが見つからない場合は、それらを参照できます。

1. http://jackycheng2007.iteye.com/blog/1477845



2. http://blog.csdn.net/cuidiwhere/article/details/12361425

3. http://zhoushu126.iteye.com/blog/1343718



最初のもの:download-compile-solve-run(簡略化された簡潔な)

tomcat 7のソースコードを学習する準備をしてください。最初のステップは、Eclipseをダウンロードしてインポートし、実行することです。
1.ソースコードをダウンロードします
tomcat 7のソースコードはsvnにあるため、svnをインストールする必要があります。ディレクトリtomcat7を作成し、コマンドラインを使用してこのディレクトリに入り、次のコマンドを使用してダウンロードします

Javaコード 画像
  1. svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_27/ ./


ここでタグをダウンロードしました。トランクなどの他のブランチもダウンロードできますが、タグは比較的安定していると思います。

2.日食プロジェクトを作成します
Tomcat 7はantを使用して構築および管理されるため、antをインストールする必要があります。 tomcat7ディレクトリで実行します。



Javaコード 画像
  1. ant ide-eclipse



実際、build.xmlを見ると、2つの既製のファイルをコピーしていることがわかります。

Javaコード 画像
  1. 'ide-eclipse'依存='deploy、extras-webservices-prepare'
  2. description =「Eclipseで構築されるソースツリーを準備します」>>
  3. '$ {tomcat.home} /res/ide-support/eclipse/eclipse.project'tofile ='$ {tomcat.home} /。project'/>
  4. '$ {tomcat.home} /res/ide-support/eclipse/eclipse.classpath'tofile ='$ {tomcat.home} /。classpath'/>
  5. Eclipseプロジェクトファイルが作成されました。
  6. ApacheTomcatドキュメントサイトのBuildingページをお読みくださいためにEclipseワークプレースを構成する方法の詳細。



したがって、このTomcatプロジェクトをEclipseにインポートできます。
3.Eclipseにlib変数を追加します
プロジェクトをインポートした後、コンパイルを妨げるいくつかのエラーがあることがわかります。実際、lib変数がありません。
ANT_HOME、antインストールディレクトリをポイントします
TOMCAT_LIBS_BASE、tomcat7で実行していない場合は、依存ライブラリの場所を指します。

Javaコード 画像


このプロジェクトをビルドしてデプロイするには、最初に実行します。
これにより、必要なライブラリがダウンロードされます。
どこに置くかわからない場合は、ecj-3.7.2を検索して、その親ディレクトリをこの変数に割り当てることができます。
もちろん、それを追加した後、eclipseはプロジェクトを再構築するように促します。その後はエラーは発生しません。

4.実行
このtomcat-7.0.xプロジェクトを右クリックし、[実行] / [Javaアプリケーション]を選択します。プロジェクト内のすべての主要機能を自動的に検索します。 org.apache.catalina.startup.Bootstrapの主な機能を選択します。選択すると、tomcat-startとtomcat-stopの2つのスタートアップ項目が表示される場合があります。実際、これはtomcat7 res ide-support eclipseの下にあるtomcatによって準備された起動ファイルです。2つの起動ファイル。つまり、これら2つのスタートアップコンフィギュレーションを実行コンフィギュレーションで直接見つけて使用することができます。実行構成の[共通]タブで、デバッグを選択するように設定して、デバッグメニューに表示することもできます。
質問:この関数のコメントがテスト専用に書かれているのはなぜですか?

Javaコード 画像
  1. / **
  2. *メインメソッド。テストにのみ使用されます。
  3. *
  4. * @paramargs処理するコマンドライン引数
  5. * /
  6. 公衆 静的 ボイドmain(String args []){


5.起動後、次のURLを開くことができます。

Javaコード 画像
  1. http:// localhost:8080 /



ウェルカムページが表示され、完了です。 mainでブレークポイントデバッグを設定できます。

6.より詳細なログを構成します

より詳細なログを見ると、Tomcatの実行を正確に追跡するのに役立ちます。 Tomcatのロギングフレームワークを使用すると、log4jなどのサードパーティのログシステム実装を構成できます。デフォルトでは、java.util.loggingを使用します。
より詳細なログ構成を実装するには、2つのステップが必要です
1)実行中のパラメーターと

Javaコード 画像
  1. -Djava.util.logging.config.file = $ {project_loc:/ tomcat-7.0.x} /conf/logging.properties


2)ログレベルの構成を変更し、FINEをFINESTに変更します。そして参加する:

Javaコード 画像
  1. org.apache.catalina.level = FINEST

第二部:多くの問題を含み、最初の記事に対処する方法

この記事は主にこのブログを参照しています http://jackycheng2007.iteye.com/blog/1477845 、しかしプロセス全体で別の問題が発生した場合、特別なレコードは次のとおりです


1.ソースコードを入手する

方法1:公式ウェブサイトから http://tomcat.apache.org/download-70.cgi 直接ダウンロード、公式ウェブサイトはバイナリとソースコードの2つのダウンロード方法を提供します。tomcatのソースコードを研究するために、ダウンロードするソースコードを選択します

方法2:svnを使用してソースコードを取得し、最初にsvnをインストールしてから、新しいディレクトリtomcat7を作成し、そのディレクトリで次のコマンドを実行します。

[java] プレーンビュー コピー
  1. svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35/ ./

タグディレクトリにはさまざまなバージョンのTomcatソースがあり、ここでダウンロードされるバージョンは7.0.35です。

2.ソースコードをEclipseにインポートします

tomcatのソースコードは、antを使用して作成および管理されます。最初にantをインストールしてから、antide-eclipseを実行します。コマンドが正常に実行されると、.projectファイルと.classpathファイルがtomcat7ディレクトリに生成されます。これがeclipseプロジェクトになります。このようにして、TomcatソースをEclipseにインポートできます。 ant ide-eclipseの実行時にエラーが発生しました: [java] プレーンビュー コピー
  1. ビルドに失敗しましたbuild.xml:2361:以下のエラーが発生しました一方実行中このライン:
  2. ビルドに失敗しましたbuild.xml:2449:コンパイルに失敗しましたコンパイラエラー出力を参照してくださいために詳細。
コンパイルされたエラーログを次のように表示します。 [java] プレーンビュー コピー
  1. build-tomcat-dbcp:
  2. [コピー]コピー64E: usr share java tomcat7-deps dbcpへのファイル
  3. [移動]移動64E: usr share java tomcat7-deps dbcp src java org apache tomcat dbcpへのファイル
  4. [javac]コンパイル64E: usr share java tomcat7-deps dbcp classesへのソースファイル
  5. [javac]警告:[オプション]ブートストラップクラス-sourceと組み合わせて設定されていないパス1.6
  6. [javac] E: usr share java tomcat7-deps dbcp src java org apache tomcat dbcp dbcp BasicDataSource.java:53:エラー:ベース
  7. icDataSourceは概要オーバーライドしません概要CommonDataSourceのメソッドgetParentLogger()
  8. [javac]公衆 クラスBasicDataSource実装情報源 {
  9. [javac] ^
  10. [javac] E: usr share java tomcat7-deps dbcp src java org apache tomcat dbcp dbcp DelegatingStatement.java:46:エラー:
  11. DelegatingStatementは概要オーバーライドしません概要ステートメントのメソッドisCloseOnCompletion()
  12. [javac]公衆 クラスDelegatingStatement拡張しますAbandonedTrace実装ステートメント{
  13. [javac] ^
  14. [javac] E: usr share java tomcat7-deps dbcp src java org apache tomcat dbcp dbcp DelegatingPreparedStatement.java:57
  15. :エラー:DelegatingPreparedStatementは概要オーバーライドしません概要StatのメソッドisCloseOnCompletion()
  16. 絶対に
ログエラーによると、dbcpに関連付けられているjarのバージョンが正しくありません。このマシンにインストールされているjdkバージョンは1.7なので、このマシンに1.6 jdkをインストールし、JAVA_HOMEがjdk1.6ディレクトリを指すように関連する環境変数を変更しました。もう一度antide-eclipseを実行しました。成功を収める
合計時間:2分57秒build-tomcat-dbcpのビルドログが次のように更新されていることにも注意してください。 [java] プレーンビュー コピー
  1. build-tomcat-dbcp:
  2. [コピー]コピー64E: usr share java tomcat7-deps dbcpへのファイル
  3. [移動]移動64E: usr share java tomcat7-deps dbcp src java org apache tomcat dbcpへのファイル
  4. [javac]コンパイル64E: usr share java tomcat7-deps dbcp classesへのソースファイル
  5. [javac]注:一部の入力ファイルは、廃止されたAPIを使用またはオーバーライドします。
  6. [javac]注:詳細については、-Xlint:deprecationを使用して再コンパイルしてください。
  7. [javac]注:一部の入力ファイルは、チェックされていない、または安全でない操作を使用します。
  8. [javac]注:詳細については、-Xlint:uncheckedを使用して再コンパイルしてください。
  9. [jar] jarのビルド:E: usr share java tomcat7-deps dbcp tomcat-dbcp.jar
  10. [jar] jarのビルド:E: usr share java tomcat7-deps dbcp tomcat-dbcp-src.jar
したがって、問題は次のように要約できます。Tomcatソースのjdkバージョンは1.6以下に依存します。 jdk1.7を使用すると、ビルドが失敗します。

3.コンパイルの問題を解決するために、ビルドパスにjarパッケージを追加します。

Eclipseをインポートすると、プロジェクトtomcat7に赤い感嘆符が付いていることがわかります。これは、依存するjarパッケージがビルドパスに追加されず、コンパイルエラーが発生するためです。リファレンスブログ http://jackycheng2007.iteye.com/blog/1477845 真ん中の3番目のステップ。発生した別の問題、org.apache.naming.factory.webservicesパッケージの下の2つのクラスServiceProxy、ServiceRefFactoryはまだ間違っており、認識されません [java] プレーンビュー コピー
  1. インポートjavax.xml.rpc.Service
  2. インポートjavax.xml.rpc.ServiceException
  3. インポートjavax.wsdl.Definition
  4. インポートjavax.wsdl.Port
  5. インポートjavax.wsdl.extensions.ExtensibilityElement
  6. インポートjavax.wsdl.extensions.soap.SOAPAddress
  7. インポートjavax.wsdl.factory.WSDLFactory
  8. インポートjavax.wsdl.xml.WSDLReader
これらのクラス。このマシンにはまだjarパッケージがありません。 Baiduは、Webサービス開発キットaxis-bin-1_4.zipが不足していることを発見しました。ダウンロード後、ビルドパスに追加して解決します。余談:ant mavenは使いやすくなく、依存するjar mavenを管理できます。mavenは、手動でjarをダウンロードしてビルドパスを追加しなくても、ウェアハウスから依存関係を自動的にダウンロードします

4.実行

リファレンスブログ http://jackycheng2007.iteye.com/blog/1477845 の4番目のステップ

パートIII:解凍されたSRCは大丈夫ですか?

オリジナル:http://www.cnblogs.com/huangfox/archive/2011/10/20/2218970.html

Tomcatのアーキテクチャまたはソースコードを調べるには、Tomcatのソースコードをideにインポートし、コード追跡(デバッグ)用のインスタンスを作成するのが最善です。

ここでは、インターネット上のいくつかの情報を参照し、自分の操作プロセスを実行中のアカウントとして記録します。

準備完了:

1.Tomcatソースのダウンロード

ここからtomcat-6.0.33ソースコードをダウンロードします。

2.antインストール。tomcatのソースコードをコンパイルするために使用されます。

antのダウンロードが解凍されたら、そのbinをシステム環境パスに追加します。

3.IDE-Eclipse3.7を選択します。

=================================

最初の一歩:

Tomcatソースを解凍します。たとえば、次のように解凍します。 D: tomcat apache-tomcat-6.0.33-src

2番目のステップ:

2.1)antを使用してTomcatソースコードをコンパイルします。コンパイルする前に、関連する依存関係をダウンロードする必要があります。コンパイルに必要な依存プロジェクトはわかりません。私たちは何をすべきか?

アリを助けましょう!たとえば、これらの依存プロジェクトを保存する場所を準備するだけで済みます。 d: tomcat basepath

2.2)antを機能させるには、apache-tomcat-6.0.33-srcフォルダーのbuild.properties.defaultの名前をbuild.propertiesに変更する必要もあります。

そしてそれを開いて、変更します base.path = d: tomcat basepath

2.3)依存プロジェクトをダウンロードし、コマンドコンソールに入り、ディレクトリを入力します D: tomcat apache-tomcat-6.0.33-src 、注文の実行: Antのダウンロード

2.4)依存プロジェクトがダウンロードされたら、tomcatをコンパイルできます。注文の実行: 。コンパイルが完了すると、ディレクトリを表示できます D: tomcat apache-tomcat-6.0.33-src

中にもう1つのフォルダがあります: 出力

出力フォルダの構造は次のとおりです。

この構造は、インストールパッケージから抽出されたTomcat構造と一致していることがわかります。

binに入り、tomcatを正常に起動します。つまり、コンパイルされたtomcatが成功しました。

=====================================

TomcatソースをEclipseにインポートします。

最初の一歩:

Eclipseで新しいJavaプロジェクトを作成します(例:tomcat6)。

2番目のステップ:

インポート->ファイルシステム

以下に示すように、FromディレクトリでTomcatソースを選択し、Javaを選択してテストします(テストする必要がある場合は、テストを選択します)。

intoフォルダーで、新しく作成したtomcat6を選択し、終了します。

注:javaを設定し、ソースフォルダーにテストし、javaビルドパス->ソース->フォルダーを追加...-> javaを選択してテストします。

プロジェクトの構造は次のようになります。

パートIII:jarパッケージをインポートします。

上記の不幸な赤いフォークは、瓶がないためです。今、どんな種類の瓶が必要ですか?

テストにはjunit.jarが必要です。これは、eclipse内で直接使用できます。

Javaのニーズ:

  • ant.jar
  • jaxrpc.jar
  • org.eclipse.jdt.core_3.3.1.v_780_R33x.jar
  • wsdl4j-1.5.1.jar

インポート後はさわやかです!

4番目のステップ:

EclipseでTomcatを起動します。

クラスorg.apache.catalina.startupパッケージでBootstrapクラスを見つけます。

実行:引数のVM引数に設定

-Dcatalina.home = 'd: output build'

その後、あなたはそれを始めることができます!

==========================================

問題:

-Dcatalina.home = 'd: output build'を設定する必要があるのはなぜですか?

まず、出力とは何かを説明します。これはantによってコンパイルされた出力フォルダーです。内容を削除して、正常に開始できるかどうかを確認できます。

このパラメーターを構成しないとどうなりますか? -Dcatalina.home = 'd: output build'を削除します。エラー:

2011-10-20 14:49:35 org.apache.catalina.startup.ClassLoaderFactory validateFile

警告:ディレクトリ[D: myWorkSpace tomcat6 lib]に問題があります。存在します:[false]、isDirectory:[false]、canRead:[false]

2011-10-20 14:49:35 org.apache.catalina.startup.ClassLoaderFactory validateFile

警告:ディレクトリ[D: myWorkSpace tomcat6 lib]に問題があります。存在します:[false]、isDirectory:[false]、canRead:[false]

2011-10-20 14:49:35 org.apache.catalina.startup.Catalina load

警告:D: myWorkSpace tomcat6 conf server.xmlからserver.xmlを読み込めません

2011-10-20 14:49:35 org.apache.catalina.startup.Catalina load

警告:D: myWorkSpace tomcat6 conf server.xmlからserver.xmlを読み込めません

2011-10-20 14:49:35 org.apache.catalina.startup.Catalina start

重要:サーバーを起動できません。サーバーインスタンスが構成されていません。

プロジェクトのルートディレクトリにlibフォルダー、confフォルダー、confにserver.xmlがないため、サーバーをインスタンス化できないことがわかります。

次に、彼のプロンプトに従い、起動時にOKです!