eclipse とは、Java プラグイン開発を目的としてつくられたフリーの統合開発環境。 もともとIBM社で開発されていたらしいが、現在はオープンソースとなっている。
コンパイラやプラグインさえ導入すれば、Java以外の言語も扱うことができる。 フリーなのに、Microsoft Visual Studio などの環境に匹敵する機能を持っており、 リファクタリングなど、VS にはない便利な機能も備えている。
詳細は以下で。
作業をしていてぶち当たった問題とその解決方法をメモ。
Eclipse には、いろいろ便利なプラグインがつくられているが、 これは、eclipse 本体のバージョンとあっていないと、ほぼ動かない。 つまり、上位互換になっていない。 (古いバージョンで対応しているプラグインが、 最新バージョンの eclipse 本体で動くかといえば、 そうとは限らないということ。)
特に、バージョン 3.1 と 3.2 は、 内部がガラリと変わっているらしい(私は確認してないけど)。
プラグインは、 対応した本体のバージョンを確認してダウンロード、インストールすること。
次の理由でビルドに失敗する。
ソースが見つかりませんでした。 JARファイルrt.jarにソース添付がありません。
これは、「ウィンドウ」→「設定」→「Java」→「インストール済みのJRE」で 使用しているJREを選択して「編集」。表示されたリストから rt.jar を選択して「ソース添付」で「(JAVA_HOME)\src.zip」を指定すれば良い。
例えば、
C:\Program Files\Java\jdk1.5.0_07\src.zip
とか。
Eclipse 3.2 系と Tomcat 6.0 プラグイン (Eclipse 3.2 に対応してるのは tomcatPluginV32beta2 または beta3 - 2007/02/13 16:02 現在 )との組み合わせで、「ウィンドウ」→「設定」→「Tomcat」の Tomcat のバージョン選択で「6.x」を選択すると、コンテキスト宣言モードのコンテキストディレクトリが「\webapps」にデフォルト設定されるのだけど、これだとうまく動かない。
ここは「5.x」の設定時と同じく「\conf\(Catalina)\(ホスト名)」の設定にする。
C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost
とか。
ただ、5.x と同じ設定なのはここだけで、Tomcat 6.x 系を使用する場合は、 バージョン選択では「6.x」を選択しておく必要がある(ライブラリの参照位置とかが 5.x と 6.x とでは違う)。
Eclipse から Tomcat を起動しても、Tomcat Configure のステータスが開始(Start)にならない(Stopped のまま)。しかし、実際は(デバッグモードで?)起動している。Eclipse でブレークポイントを設定してトレースする場合は、Tomcat Configure で起動してもトレースできない。Eclipse から起動する。
Eclipse で Tomcat を起動したときに、Configure Tomcat で操作(起動/停止)するとおかしなことになる。その逆も然り。Eclipse で起動したら Eclipse で停止すること。
ちゃんと、連動すればいいのになぁ。。。
Amateras HTML Editor で DOCTYPE を記述すると、保存と展開にかなり時間がかかる。
例えば、
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> (以下 XML 本文...)
のように、外部 DTD を参照させたときに時間がかかっているかも。(この記述があると、接続状況によっては Eclipse がフリーズしたようになるが、根気よく待てば、ちゃんと開かれる。)
ちなみに、プロキシの設定が正しくないと、外部に接続できず、タイムアウトするまで Eclipse が固まってしまう。プロキシの設定は、「ウィンドウ」→「設定」→「インストール/更新」ページの「プロキシの設定」。
環境
taglib をちゃんと設定しているにも関わらず、Eclipse(Amateras?) がエラーを吐く。
具体的には、次の通り。
WEB-INF の下に tld ファイルをインポートして、 web.xml に、taglib のロケーションを記述。( web.xml は WEB-INF の下に配置。)
<taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib>
JSP ファイルの先頭に、この taglib を記述。
<%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
以上は正しい設定(のはず)。
これで、このJSPに、例えば、
<html:html> (HTMLの内容) </html:html>
のように記述して("html:html" は tld で定義されている)保存(Ctrl+S)すると、 Eclipse が次のエラーを出力する。
"html"に対応するtaglibディレクティブが存在しないか tld ファイルが見つかりません
あるっちゅうねん!
実際、これでもJSPはちゃんと動く。 Eclipse がエラーだと誤認しているだけなんだけど、このままだと非常に気分が悪い。
どうやら、ワークスペースをコンテキストのルート以外のところにするとこうなるらしい。 (コンテキストのルート配下にサブディレクトリを作って、そこにJSPやWEB-INFを作ってる場合など。)
これを解決するには、 「プロジェクト」→「プロパティ」→「Amateras」の「ルート」というところに、 作業をしているサブディレクトリのパスを書く。
例えば、「webapp」というコンテキストディレクトリの下に 「AppTop?」というサブディレクトリを作って、その下にWEB-INFなどを配置している場合は、 ルートに「/AppTop?」と書いておく。
これで「適用」或いは「OK」をしても、なぜかエラーは出っ放しなので、 いったん Eclipse を閉じて、再度開きなおす。 で、問題のJSPファイルを開けば、エラーは解消されるはず。
きっかけは解らないが、ときどき、既に入れているプラグインにエラーが発生して、 新たなプラグインがインストールができなくなることがある。
例えば、これ。
要求された操作は現在の構成には無効であるため、実行できません。 詳しくは詳細を参照してください。 Hibernate Tools (3.2.0.beta9a) 必須: プラグイン "org.eclipse.wst.common.project.facet.core (1.1.0)"、 またはそれ以降のバージョン。
この場合、既にインストールしてある Hibernate Tools プラグインにエラーがある為、 新たなプラグインがインストールできない。
考えられるのは、
いずれにしろ、このままだと新たなプラグインが入れられない。
対処
とりあえず、問題になっているのが当面使わないプラグインであれば「無効」にする。
この場合、無効にしたプラグインを有効に戻そうとすると、同様のエラーが出て戻すことができないので、 だましだましでもそのプラグインを使いたい場合は、ちょっと覚悟が必要。
だれかこの問題解決してくれてないかなぁ。