NetBeanserのに子にとって昨今のEclipse大ブームは「なにがそんなにいいかな〜」という感じだ。なにがそんなにいいか使ってみようじゃねえか。と、以前からポチポチ使ってみてはいたのだが、最近バージョンが3になってなかなか面白くなってきた。で、使用感を書いてみようと思います。ひねくれNetBeanserの手によるレポートだから、Eclipserのヒトには面白くなかったらゴメ〜ヌ。長いつきあいになることを祈りつつ、新しい記事ほど上にくる積み上げ形式。
/と思ったら返り討ちだッ(ちがうけど)!/NetBeansでLomboz斬り!/ニッキーと呼ぼう/x86-Solaris用にリビルド!/バージョン3だとSolarisで日本語が!/
そんなわけでNetBeansでLombozをいじくりまわしてホーホホホだったわたしだが,ちょっとだけ謙虚なのが幸いした。それは,このようにLombozを勝手にいじくりまわした以上,せっかくこのような素晴らしいプラグインを作った人々にごあいさつなしではマズいだろう,と思ったのだ。
Lombozの開発者にコンタクトしたほうがいいのだろうか?少し探してみると,フォーラムがあった。
http://forge.objectweb.org/forum/forum.php?forum_id=360
Lombozページでも,ここで修行せよとすすめている。よしよし。アカウントをもらって,フォーラムでスレを立ち上げてみた。内容も,謙虚にしておいた。
「デプロイしたモジュールでヘンなことになりました。自分なりの解決はしてみましたが,これはバグでしょうか私が悪いのでしょうか。詳細はマイウェブサイトに掲載したので関心あるカタは御覧ください。なお解決にNetBeansを使っていることはあまり気にしないでください,わたしコッチのほうが慣れているので」
そのマイウェブサイトも,日本語版とは違って,結構謙虚にしたつもりだ。だってLombozを作った人が見るかも知れないじゃない。そんなわけで落ち着いていると,4時間後にレスがきた。ダンナも帰ってきてめしくって片付けてあとはブログ書いて寝ようかというところだ。
「よく書けたウェブページだと思うヨ。
」
ガーン
その日の午後いっぱいかかってLombozページを作り,もうロンボスもランバダも見る気もしなくなっていたときだったが,わざわざ教えてもらった以上即やるっきゃないだろう。やってみた。
まず,eclipse/plugins, eclipse/features フォルダをそれぞれオリジナルのものに戻して(もちろんバカプはとってあったわヨホーホホホ(て威張るなヨ))裸一貫出直しである。
それから,Lomboz J2EEモジュールを新規作成する。ウィザードで,ソースファイルの置き場所が決めテだ。

このように「Add Folder...」ボタンをクリックして「src」フォルダを追加する。すると,じゃあビルド生成物はbinフォルダに置けということだナと確認される。

1.どうしてこの操作がすぐに思いついたのだろう。それはやはりこれまで読んできたEclipseの記事や本のおかげだろうと思っている。それらの作者のみなさんありがとう。あとNetBeansだけに固執せず日食チャマも一応勉強してきたワタシえらいぞ。
2.だがどうしてこの操作をもっと前に思いつかなかったのだろう。それは一応しか勉強してこなかったテメエのせえだテメエの>俺。
そしてこのようにsrcフォルダが追加される。

あとはこれまでの通りに設定していく。すると今度はプロジェクトの構造はこんなふうになる。

今度はちゃんとパッケージを作ってからJavaファイルを置く。そしてデプロイして猫を上げてみた。さあ,見てみよう。最後の悪あがきでNETBEANSのFAVORITEウィンドウで見てみよう。

すばらしい!何もしなくてもスッキリとしたWebモジュールがデプロイされた!教えてくれたセルゲイたむ,ありがとう!うれしい!でもちょっぴりくやしい。この次こそEclipseのカスタマイズにはNetBeansは欠かせないツールですと言える材料を見つけてやる!
そんなニッキーである日ワタシはLombozを動かしていた。LombozはJBossでEJB,という印象が強いかも知れないが,Tomcatで動くアプリにしても,コードアシストとかタグライブラリサポートとかサーバへの自動デプロイとか,NetBeansがデフォルトで持っているような機能を備えているので非常に役に立つ。
Lombozのインストールや設定の仕方は,こちらを参照願いたいつかわたしが大いに参照した。
「EclipseによるJavaプログラミング詳解」内村莞爾著,セレンディップ刊
「Java World」 IDGジャパン発行,2005年3月号特集
ひとつのクセを覚えればこれは快適に動く。Java Beanやヘルパークラスなどの生Javaは,WEB-INF/classesフォルダに直接は作れない。こんな場所に作る。
DummyBean.javaの場所にご注目
つまり,WEB-INF/classesフォルダにムリヤリつくるとそのクラスはWEB-INF.classesパッケージと解釈されてしまうからのようだ。この構造はデプロイ時にちゃんと調整される。それには(プロジェクト名が違ってるけどゴメヌ)このモジュールつかパッケージな部分を右クリックして「Lomboz J2EE」というメニューからいろいろ選ぶわけだ。

これで「Deploy Module」を選ぶと,ちゃんとしたWebモジュールの構造にファイルコピーなどがなされて,最終的にTomcatに送られるというワケだ。
ということで非常に楽しく使っていたが,あるときちょっとした用事で,Tomcatに配備されたLombozアプリを開けてみたら,

あれ?なんでFドライブなの?
というのはいい。うちの自作Athlon64マシン,なぜかFドライブがシステムドライブなのだ。とても気持ち悪いし,ブログ仲間のリックさんにも「それはアウチだね」とコメントをもらったくらい気持ち悪いのだが一応動いている。だがそれはいい。もっとあれ?なのはまぎれこんでいるDummyBean.classだ。こんなところにいてなんで動くんだろうと思ってWEB-INFフォルダを開けてみた。

あれ?distフォルダとかあるし,ドットで始まるファイルなんかも入っている。しかしdeploytestmodというのはパッケージフォルダのはずだ。さらに開けてみる。

おぉーぅ?(阿部寛さん風)
この無限ループのようなフラクタルのような構造は一体なんなんだ?だが確かにWEB-INF/classes/deploytestmod/DummyBean.classは存在した。だから動いているわけだ。「ええんじゃ!動きゃええんじゃ!」はワタシの座右の銘だが,これはちょっと・・・・
ビルドファイルだ!ビルドファイルに何か秘密があるに違いない。右クリックで「Deploy Module」を選ぶと,IDEコンソールで蟻が話しかけてくるからだ。蟻,といえば最近NetBeans4のおかげでだいぶ話が通じるようになってきた。図を再掲するが,ここにbuild.xmlがある。
,
蟻の巣を開けてみると,どうやらこのへんに秘密があるらしい。「init」というターゲットだ。

distというディレクトリに,Webモジュールとして必要な構造をコピーするらしいが,おそらく,ここを直せばいいのではないだろうか。
ElipseにもAntエディタがあって,それはええと・・・
というわけでワタシはNetBeans4.0を立ち上げた。 なぜなら・・・NB4には
これはこうやって使う。

するとファイル参照画面が現れるので,EclipseのworkspaceにあるこのLombozプロジェクトを選ぶのだ。

するとこのLombozプロジェクトの全てのファイルが表示される。WEB-INFフォルダを開けてさっきのbuild.xmlノードを出す。

コイツをさらに開けると,各ターゲットを見ることができる。「init」ターゲットをその場で実行できるのだ。

すると,プロジェクト中に「dist」フォルダができる。
ノード選択が違ってます。ゴメヌ。下のほうネ。
こいつを空けてみると・・・オオ・ラ・ラ。

果てしなくできているゾ!やはり,initターゲットの問題だ!どれどれと検討ののち,このように編集してみた。まず,コンテキストルートへのファイルのコピーだ。

クラスファイルが来ないようにする。
次に,問題のWEB-INF/classesフォルダへのコピー。地道に,入れたくないものをチマチマ指摘するだけだ。

まず,WEB-INFやMETA-INFフォルダはコピーしない。ドットで始まるファイルもいらない。distフォルダも除外。あとjspも除外。
classesフォルダだけど,プロパティファイルとかも導入することがあるから,.class拡張子のファイルだけを選ぶ・・・というわけには行かないんだネ。
のにの思いついたのはこんなもんだ。まあ,それほど複雑なWebアプリでなければ,これでイケるんじゃねえかな。このカンタンなWebアプリだと,これで「init」を走らせると,今度は

と,ちゃんとした構造のdistになった。やれやれ。
ということで,ビルドファイルを書き換えればよいということがわかったが,このビルドファイルはLombozプロジェクトを作成すると自動で作成されるものだ。きわめて再生産性高く抽象的に書かれているので,どっかのプロジェクトで作ったら他のプロジェクトでも使いまわせるすばらしいビルドファイル・・・ではあるがやっぱりいちいちコピペするのは面倒だ。
と,考えた。一応,プラグインの本書いてるし。
しかし,Lombozプラグインはたくさんのフォルダからできている。どのフォルダなんだ?・・・こういうときには,
おりゃッ。

eclipseの「plugins」フォルダを「Favorites」のまな板に載せた。どうするかというと,
com.objectlearn...というフォルダを片っ端からだ。そして

これを書き換えればよい。・・・とはいえ,これは圧縮されたままだからこのままでは,読むことはできるが書けない。
ここからは・・・昔はNetBeansでいろいろできたんだけどな〜。最近このへんはケチくなったよな〜。しょうがないからコマンドプロンプトでヤル。
まず,Eclipseを終了させないとネ。
eclipse/plugins/com.objectlearn.jdt.j2ee_3.0.1ディレクトリまで降りていく。そこにlomboz.jarがあるのだ。コイツを
jar -xf lomboz.jar
とやるといきなりディレクトリがとっちらかるからやめたほうがいい。lombozというディレクトリを作って,そこにlomboz.jarをコピーする。もとのlomboz.jarはbak-lomboz.jarのように名前を変更しておくがヨロシ。
lombozフォルダに入って,jar -xf lomboz.jar とやる。これで実際のテンプレートファイルが得られるので,内容を書き換える。<fileset dir=...></fileset>の部分だ。
終わったら,META-INFからMANIFEST.MFファイルを取り出して,カレントディレクトリであるlombozフォルダ直下に置く。そうしてここから
jar cvfm ../lomboz.jar MANIFEST.MF *.*
とやった。lomboz.jarファイルは外に生成されてくれないと,今度は本当に無限ループになる。オプションvつまり作業状況の表示はいらないかもしれない。どうせ大量すぎて目で終えない。ああちゃんと仕事してくれているなというのを確認するくらいの意味だ。
こうして,lomboz.jarが新しくできたら,バックアップしておいた前のjarとかソースの入ったlombozフォルダとかは,まあ適当に片付けておく。そしてEclipseを再起動。
これで,Lombozプロジェクトを作るたびに,新しいビルドファイルが自動作成されるようになった。ちなみにjspとBeanとかのカンタンなWebアプリなら,これでちゃんと動いたヨ。
NetBeansはこんな風にも使えるんだゾッ。おんなじことをEclipseで,でっきるかなできるかなー?ホーッホッホッホッ。
このようにEclipseもだいぶマイ環境にフィットしてくれるようになった。そこでこれからもう少し仲良くしていきたいと思うのである。それには「日食野郎」ではちとアレかもしれないので、これからはニッキーと呼ぶことにした。でもあとで冷静に考えたらそれならニッシーであるはずだった。でもこういうのはノリイッパツだからいいのだ。
2004年04月10日
と、思っていたら、のんのんに「誰かいないのかそういうことヤッてるヒト。Webで調べてみたら」
と言われたので、調べてみたら、ちゃんとあった。
Eclipse IDE under
Solaris/x86 というページだ。非常に親切に書いてある。SPARC用の
ここに書かれていたのはEclipse2.1.0用の話で、いくつかのmakefileを、SunCC用からgcc用に書き換える必要があるようだった。だが、わたしがやろうとしている3.0では、すでにSolarisもgccでコンパイル、が前提になっているらしく、もっとカンタンだった。
ちなみに、解凍して出てくる実行ファイルは、実行権が消えているかも知れないので、確認してつけなおしてクダシャイ。
まず、SPARC版のeclipse eclipse-SDK-3.0M8-solaris-motif.zipをもらってくる。
解凍する。
eclipse/plugins/org.eclipse.platform.source.solaris.motif.sparc_3.0.0/src/org.eclipse.swt.motif_3.0.0/ws/motifまで行く。ふけえ。
swtsrc.zipというファイルを見つけて、こいつを解凍する。
make_solaris.makというファイルを開いて見る。なんだかGNU GCCを使ってるとか書いてあるので、これでいいのではないかと思う。ただ、PATH=以下の部分に、一応/opt/sfw/binを書き加えておいた。必要かどうかは、わからない。
そして、そのディレクトリ内で
./build.sh
でビルドすると、
libswt-cde-motif-3044.so
libswt-motif-3044.so
というファイルが生成される。
こいつを、以下のように処理する。
eclipse/plugins/org.eclipse.swt.motif_3.0.0/os/solarisまで行く。
そこにあるsparcディレクトリを、sparcbakみたいな名前で、一応とっておく。まあ、ダメくなったら解凍しなおしゃいいんだが。
新たに、sparcディレクトリを作り、上の生成ファイル二つを入れてやる。
次。eclipse/plugins/org.eclipse.platform.source_3.0.0/src/org.eclipse.platform_3.0.0まで行く。
launchersrc.zipというファイルを見つけて、こいつを解凍する。
すると、libraryというディレクトリが新しくできるので、そこに入る。
さらにmotifというディレクトリを見つけて、そこに入る。やはり、make_solaris.makを見つけて、まあ一応PATH部分に加筆をしておく。
./build.shで、再ビルドすると、
eclipse
あの実行ファイルなのだそうだこれが。
このeclipse実行ファイルを、eclipseディレクトリのチョク下に入れて、実行すると、おお!最速Solaris上でのEclipseは、なかなかまともに動くぞ。さすがオープンソース!
でも、NetBeansには、最初っからx86-Solaris版あるんだけどネ。
2004年04月10日
わたしは、日本語が好きだ。中学校1年のときに「銭形平次捕物控」を読んでいて、平次親分のセリフ「なんだってあんな馬みてえに達者な野郎が脚気なんか踏み出しゃあがったんだ」という一言に感動して一週間くらい思い出し笑いを続けたことを覚えている。だから開発環境に日本語サポートは必須である。だが、マイメインJava開発環境であるSolaris上ではどーも、Eclipseの日本語がサポートされないという問題を抱えていた。
ところが、この前ふと、LinuxにEclipse3.0M8を導入したとき、急いで確かめたい機能があったのでLanguage Packを考えずにちゃっちゃと導入してちゃっちゃと起動したらリリース版2.1.3で作った日本語を含んだプロジェクトがちゃんと表示された。おや、3.0からはもうLanguage
Packを導入しなくても最初っからマルチリンガルなんだ。ほほう。
あれ?ということは・・・
Solaris-Motif版の3.0M8をもらってきて、Bladeに入れてみた。見事に日本語入力、そして表示ができた。すごーい。やったゼ!よくやってくれた日食野郎!
まあ、NetBeansはもっと前から、日本語バリバリだったんだけどさ。
2004年04月10日