【Eclipse】動的Webプロジェクトでのプロパティファイル読込

動的Webプロジェクトのプロパティファイル読込で
以下のように処理を書いてみました。

prop.load(new FileInputStream("hoge.properties"));

プロパティファイルをプロジェクト直下、クラスパス直下、パッケージ直下においてみましたが、
いずれも実行時にエラーになりました。
解決策として以下の通りにしました。

プロパティファイルは「WEB-INF/src」直下に配置し、
「WEB-INF/class」に自動コピーされるので、
以下のように処理を変更しました。

prop.load(this.getClass().getResourceAsStream("/hoge.properties"));

【Eclipse】classpathに書き込めませんでしたというエラーの原因

新規でプロジェクトを作成せず、
インポートしたプロジェクトに対して、外部JARファイルを追加した場合、
以下のようなエラーが出ることがあります。

ビルド・パスの設定(.classpathに書き込めませんでした)

原因は「.classpath」ファイルが隠しファイルになっているから。
「.classpath」ファイルを右クリックし、隠しファイルのチェックを外せば
エラーが解消します。

【Eclipse】動的Webプロジェクトのコピー

Eclipseで動的Webプロジェクトをコピーしたい場合、以下を行う。

  • プロジェクト名のリファクタリング
    プロジェクトで右クリックし、リファクタリングを選択する。
    変更後のプロジェクトを入力する。
  • プロジェクトのコンテキスト名変更
    プロジェクトで右クリックし、「プロパティ」を選択する。
    Webプロジェクトの設定を選択し、コンテキスト・ルートを
    コピー後のプロジェクトに合わせて変更する。
  • ローカルのTomcat設定変更
    以下ファイルの「Context docBase」のプロジェクト名を変更する。

    /workspace/Servers/ローカル・ホスト の Tomcat v7.0 サーバー-config/server.xml
    

【Eclipse】Eclipse再設定

Eclipseで色々いじりすぎて復元できなくなった場合の再設定メモ。

EclipseはIndigoの3.7.2を利用しています。

  • 壊れたEclipse
    【モジュール】
    EclipseのworkplaceディレクトリからSVN管理されていないプロジェクトをコピーしてどこかに保存する。

    【設定】
    「ファイル」-「エクスポート」を選択する。
    「一般」-「設定」を選択し、「次へ」ボタンを押下する。
    全てをエクスポートにチェックを入れ、「宛先設定ファイル」を指定し、「完了」ボタンを押下する。

  • 新しいEclipse
    【モジュール】
    どこかにコピーしておいたプロジェクトを新しいworkplaceに配置。
    「ファイル」-「インポート」を選択する。
    「一般」-「既存プロジェクトをワークスペースへ」を選択し、「次へ」ボタンを押下する。
    ルート・ディレクトリの選択にチェックを入れ、プロジェクトを選択し、「完了」ボタンを押下する。
    SVN管理されているプロジェクトはチェックアウトする。

    【設定】
    「ファイル」-「インポート」を選択する。
    「一般」-「設定」を選択し、「次へ」ボタンを押下する。
    ソース設定ファイルを選択し、「完了」ボタンを押下する。

【Eclipse】リモートデバッグ

ローカル環境でWebアプリケーションサーバを入れ、
その上でデバッグで動かしながら開発することはよくありますが、
他環境で動作しているWebアプリケーションに対してデバッグする方法。

前提条件として、デバッグ可能な状態でWebアプリケーションを起動していること。
Raspberry PiではTomcatが起動しているので、Tomcatを例にします。

  • デバッグモードでTomcat起動
    「$TOMCAT_HOME/bin/catalina.sh」を確認すると下記ようになっています。

    if [ "$1" = "jpda" ] ; then
      if [ -z "$JPDA_TRANSPORT" ]; then
        JPDA_TRANSPORT="dt_socket"
      fi
      if [ -z "$JPDA_ADDRESS" ]; then
        JPDA_ADDRESS="8000"
      fi
      if [ -z "$JPDA_SUSPEND" ]; then
        JPDA_SUSPEND="n"
      fi
      if [ -z "$JPDA_OPTS" ]; then
        JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS, server=y,suspend=$JPDA_SUSPEND"
      fi
      CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
      shift
    fi
    

    引数に「jpda」を与えるとデバッグ可能な状態で起動できます。
    自作シェルではそんな引数を受け取れるよう作成していないので、
    「catalina.sh」を直接呼び出します。

    /etc/init.d/tomcat.sh stop
    /tomcat/apache-tomcat-7.0.55/bin/catalina.sh jpda start
    
  • Eclipseの設定

    Eclipseから「実行」-「デバッグの構成」を選択。
    リモートJavaアプリケーションで右クリックして新規を選択。
    接続プロパティーのホスト:z-area.net または Raspberry PiのIP
    接続プロパティーのホスト:8000
    他はデフォルトのまま「適用」ボタン押下。
    「デバッグ」ボタン押下。
    

    ローカルのソースにデバッグポイントを置いて
    Webアプリケーションに接続し、デバッグポイントを通るような操作を行うと
    他環境のWebアプリケーションに対してデバッグできます。

    Eclipseから「デバッグ」ボタン押下してタイムアウトになる場合、
    サーバ側のFWでポート8000を許可する必要があります。

【Eclipse】Eclipseのwarファイル出力

プロジェクトを右クリックし、エクスポートから「Web」-「WARファイル」を選択。
Webプロジェクト名:任意名
宛先:任意の出力ファイル名

画面に従いそのままwarファイルを出力しようとすると
「モジュール名が無効です。」とエラーが出て出力できない・・・。
原因はTomcatプロジェクトになっているからで、
動的Webプロジェクトに変更すれば良いので、手順をメモしておきます。

プロジェクトを右クリックし、プロパティから「プロジェクト・ファセット」を選択。
変な英字リンクをクリックするとチェックボックスがたくさんある画面が開くので、
「Xdoclet付き動的Webプロジェクト」を選択してから下記の通り修正。

Java:1.7 バージョンを変更しました。
JavaScript:1.0 チェックボックスを付けました。
WebDoclet:チェックボックスを外しました。
動的Webモジュール:2.4

上記設定を行い、「適用」ボタン押下。
設定が完了するとプロジェクトに地球儀がついて、warファイル出力が出来るように。

ついでにjarファイルの配置メモ。

Tomcatプロジェクト:「ファイル」-「新規」-「その他」-「Java」-「Tomcatプロジェクト」

【配置jarファイル】
(1) JREシステムライブラリー7.0
(2) eclipseJP-tomcat-7.0-lib
  ⇒jsp-api.jarファイルやel-api.jarファイル
(3) eclipseJP-workspace-プロジェクト名-WEB-INF-lib
  ⇒poiやmysqlのjarファイル

【Javaのビルド・パス】
(1)、(2)、(3)
動的Webプロジェクト:「ファイル」-「新規」-「動的Webプロジェクト」

【配置jarファイル】
(1) JREシステムライブラリー7.0
(2) WebAppライブラリー
  ⇒(4)と(5)のjarファイル、warファイルをエクスポート時にも利用
(3) EARライブラリー
  ⇒配置なし
(4) eclipseJP-tomcat-7.0-lib
  ⇒jsp-api.jarファイルやel-api.jarファイル
(5) eclipseJP-workspace-プロジェクト名-WEB-INF-lib
  ⇒poiやmysqlのjarファイル

【Javaのビルド・パス】
(1)、(2)、(3)

【Eclipse】EclipseでSubversion

  • EclipseからSubversion参照
    ローカル環境のEclipseから「ウィンドウ」-「パースペクティブを開く」-「その他」で「SVNリポジトリ―・エクスプローラー」を選択。
    「新規リポジトリ―・ロケーション」ボタンを押下。

    一般タブ
    URL:http://z-area.net/svn/z-test/

    認証タブ
    ユーザ:ユーザ名
    パスワード:パスワード

    証明書の信頼性に云々と警告が出ますがオレオレ証明書なので常に信頼。
    これでSubversionを参照し、コミット済のプロジェクトをチェックアウトしたりできます。

  • EclipseからSubversionコミット
    ローカル環境のEclipseからJavaEEのプロジェクト・エクスプローラーのプロジェクトで右クリック。
    「チーム」-「プロジェクトの共用」を選択。
    SVNを選択。
    既存のリポジトリ―・ロケーションを使用を選択。
    シンプル・モードを選択。
    完了ボタン押下。

    これで新規プロジェクトをSubversionへコミットできます。