!!!Eclipse Tips {{category "統合開発環境 (IDE)",Eclipse,nolink}}Eclipse のメモとか !!!Eclipse のエディタで矩形選択(箱形選択・ブロック選択)をする エディタ部で“Alt + Shift + A”で矩形選択が出来る(Eclipse 3.5 で確認)。 “Alt + Shift + A”で箱形選択モードになるので、Shift+矢印 or マウスのドラッグで選択をする。再度“Alt + Shift + A”で通常に戻る。 !!!Eclipse の比較で空白の違いを無視する ソースのインデントがスペースだったりタブだったり、インデントのレベルが違ったり、ソースのフォーマット(整形)を行うと、比較エディタで差が大量にでる。 こういった空白等の差異による違いを無視させる場合は、[ウィンドウ]-[設定]で設定画面を開き、[一般]-[比較/パッチ]の[一般]タブの「空白を無視」にチェックを入れる。 ちなみに、比較エディタは、SVNやCVS、ローカル履歴などの変更前後の比較の他に、選んだ2つのファイルを比較する事も出来る。上記の設定はこれらすべてに適用される。 !!!ワークスペース名を表示する 複数(特に同じような構成)のワークスペースを使っている場合、どのワークスペースを開いているかわからなくなる。「-showLocation」オプションを指定することで、タイトルがワークスペースのロケーションが追加された形となる。 !!!大きなヒープメモリを割り当てる オプションでEclipseに割り当てるヒープメモリのサイズを指定できるが、あまり大きなサイズを指定すると起動できない。(ex. 実メモリ2G、仮想2Gで、-Xmx768M はいけるが、-Xmx896M はダメ) Eclipse の -vm オプションを使用して、'''JDK''' の javaw.exe を使用するようにするとよい。 ::コマンドライン例:(実際は1行で) :::C:\...\eclipse>eclipse -data C:\...\workspace -vm C:\Java\jdk1.6.0_02\bin\javaw.exe -vmargs -Xms32M -Xmx1024M -XX:PermSize=32M -XX:MaxPermSize=256M !!!他のプロジェクトを参照するTomcatプロジェクト システムのライブラリ類を除くと、Tomcat が実行する際に '''(プロジェクト)/WEB-INF/classes''' 配下のクラスファイルか、'''(プロジェクト)/WEB-INF/lib/''' 配下のJARファイルしか参照しない。 よって、他のプロジェクトを参照するような場合(例えば、Server と Common プロジェクトとか)、Eclipse 上でプロジェクト参照を設定しただけでは、Eclipse は参照できても、Tomcat を動かす際には、参照先のプロジェクトのクラスが見つからずエラーとなる。 !!WTP の Dynamic Web project で設定する 「Web Tools Platform (WTP)」プラグインを入れた上で、「Dynamic Web project」で Server プロジェクトを作成する(Common は通常の Java プロジェクト)。 そして、「Javaのビルド・パス」のプロジェクトと「Java EE Module Dependencies」のJAR/Module で Common プロジェクトを含めるようにする。 Java EE の設定を行うと「Web App Libraries」というクラスパス・コンテナーが追加される(Eclipse 3.5.0) WTP プラグインがあり、Tomcat プラグインが古いので、この方法が正解かな。 !!Tomcat プラグインで、設定の Tomcat 項目でクラスパスに追加させる 「ウインド」の「設定」で「Tomcat」の「拡張」の「JavaプロジェクトをTomcatのクラスパスへ追加」で、Common プロジェクトにチェックを付ける。 <<未確認>>:この場合、ワークスペースのすべてのプロジェクトが対象となるので、同じような構成のプロジェクトが複数ある場合、同じパッケージの同名クラスがある場合に読み込まれるクラスが分からなくなる。(プロジェクトを閉じていれば読まれない?) ただし、Common プロジェクト内にある Class.forName でインスタンスを作成するクラス(メソッド)を利用して Server プロジェクトのクラスを指定しインスタンスを作成する場合、ClassNotFoundException が発生する。(互いのクラスローダーが違うため?) !!参照先のJarを作成し、"/WEB-INF/lib/" に配置 Common プロジェクトのJarファイルを作成し、それを "/WEB-INF/lib/" に配置して Tomcat に読ませる。 ただし、ビルダーに登録すると1箇所を修正・保存するたびにJarファイルを作り直すので、Common プロジェクトが大きくなるとビルドの時間が長くなる。 また、ビルダーに登録せず、外部ツールとして登録し、Tomcatを起動する前にJarを作成する方法もある。(「修正した内容が反映されてない」と思ったらビルドしてなかったなんてこともたまにあるけど) !プロジェクトプロパティの「ビルダー」の項目 「新規」を押下し、ツールタイプは「プログラム」を選択 ::名前 :::Make Common Jar ※適当に分かりやすいの !メイン タブ ::ロケーション :::${env_var:JAVA_HOME}\bin\jar.exe ::作業ディレクトリ :::${workspace_loc:/Server/WEB-INF/lib} ::引数 :::cfv0 Common.jar -C ${workspace_loc:/Common/classes} . *v : 格納されたファイル名などを標準エラー出力に出力する。 *0 : ZIP による圧縮を使用しないでまとめるだけ。 !ビルド・オプション タブ ::ビルダーの実行 :::「クリーン」の後、手動ビルド中 にチェックされている。 :::自動ビルド中 は必要であればチェック。 ::関連するリソースのワーキング・セットを指定 :::自動ビルド中をチェックした場合は、チェックする。 :::「リソースの指定」を押下して、Common プロジェクトの classes にチェックする。 !!ソースのリンクを張って自プロジェクトのソースとする Common プロジェクトのソースフォルダをリンクして、自プロジェクトのソースと同じように扱う。 Common プロジェクトのクラス・メソッドなどの参照や宣言を探した場合、実際の Common プロジェクトのではなく、リンクした方のクラスやメソッド対象となる。リファクタリングの対象もこっちとなる。また、逆に、Common プロジェクトから参照を探したり、リファクタリングを行った場合、Server プロジェクトは対象とならない。 !プロジェクトプロパティの「プロジェクト参照」の項目 参照先のプロジェクトは含めない。 !プロジェクトプロパティの「Javaのビルド・パス」の項目 「ソース」タブの「ソースのリンク」ボタンを押下 ::リンクされるフォルダーのロケーション :::実際の参照先のソースがある物理ディレクトリを指定 ::フォルダー名 :::CommonSrc ※適当に分かりやすいの !!参照先のクラスファイルを "/WEB-INF/classes/" に配置 Common プロジェクトがビルドされた時に作成されたクラスファイルを Server プロジェクトにコピーする。Server プロジェクトをクリーンした時にもコピーをするようにしたほうがよい。よって、両方のプロジェクトにビルドタスクを設定する。 自動的にビルドするようにしていて、複数のファイルを修正している場合、1つを保存した時にビルド処理が動くため、他のファイルも保存するか尋ねられる。特にキャンセルして保存しなくても問題はない。 希に(クリーンとのタイミングで)コピーに失敗して ClassNotFoundException となる場合がある。外部ツールにも(/Dオプションなしで)登録して手動でコピーできるようにするとよいかも。 !プロジェクトプロパティの「ビルダー」の項目 「新規」を押下し、ツールタイプは「プログラム」を選択 ::名前 :::Common Classes File Copy ※適当に分かりやすいの !メイン タブ ::ロケーション :::${env_var:SystemRoot}\System32\xcopy.exe ::作業ディレクトリ :::${workspace_loc:/Server/WEB-INF/classes} ※「ワークスペースの参照」で該当プロジェクトを参照 ::引数 :::${workspace_loc:/Common/classes} ${workspace_loc:/Server/WEB-INF/classes} /D /E /Y */D : 日付が新しいファイルのみコピーする。 */E : 空のディレクトリも含めてコピーする。 */Y : 受け取り側の既存ファイルの上書きを確認しない。 !ビルド・オプション タブ ::ビルダーの実行 :::「クリーン」の後、手動ビルド中、自動ビルド中 にチェックされている。 ::関連するリソースのワーキング・セットを指定 :::自動ビルド中をチェックした場合は、チェックする。 :::「リソースの指定」を押下して、Common プロジェクトの classes にチェックする。 !!(おまけ)Tomcat 5.5 実行構成 Tomcat を Eclipse から起動する実行構成。まぁ、Tomcat プラグインで作成される実行構成が元なのですが…。 ※ '''%TOMCAT_HOME%''' は、Tomcat をインストールしたディレクトリ (例:''C:\Program Files\Apache Software Foundation\Tomcat 5.5'' )。 !メイン タブ ::プロジェクト :::(空) ::メインクラス :::org.apache.catalina.startup.Bootstrap !引数 タブ ::プログラムの引数 :::start ::VMの引数 ::: -Xms32M -Xmx512M ::: -Dcatalina.home="%TOMCAT_HOME%" ::: -Dcatalina.base="%TOMCAT_HOME%" ::: -Djava.endorsed.dirs="%TOMCAT_HOME%\common\endorsed" ::: -Djava.io.tmpdir="%TOMCAT_HOME%\temp" ::作業ディレクトリ :::「その他」を選択、%TOMCAT_HOME% !クラスパス タブ ::ブートストラップ・エントリー :::JRE システムライブラリ (デフォルトのままでよい) ::ユーザー・エントリー :::%TOMCAT_HOME%\bin\bootstrap.jar を指定