eclipse.iniでJVMを指定してメモリ関係(ヒープ)のエラーを回避する。ロケールを変更してhtmlエディタのバグを回避する。
d:id:kanonji:20090118でeclipse3.4系であるGanymedeで環境を作りました。
その流れでeclipse.iniにも手を加えたので覚書です。
JavaVMを指定する。
-vm C:\Program Files\Java\jre6\bin\javaw.exe
これを記述する事で、使用するJavaVMを指定出来ます。
今回指定した理由は、しないとメモリ関係のエラーで起動出来なかったからです。
実はeclipseは環境によっては、メモリ関係のエラーでeclipseが起動し無い事があります。
ZIPを解凍し実行してみるが、下記のようなエラーが出てしまう。
Eclipse Foundation公式のPHP開発用プラグイン「PDT 1.0」(Eclipse PHP Development Tools)がリリース。だけど起動時にエラー - プログラマのチラシの裏
JVM terminated. Exit code=-1
以下省略
この時は、下記を削除する事でエラーが回避出来ましたが、これを消すとJavaVMにヒープ領域の最小と最大値を渡す事が出来ません。
-vmargs -Xms40m -Xmx256m
-vmargs以下を消していると、ヒープ領域が128MB程度しか確保されず、どうにも不足がちでした。
どこで見かけたかは忘れましたが、JavaVMを指定する事で、これらを消さなくても起動出来る様になりました。
なお、-vmargsより後に書かれたものは、全てJavaVMへの引数として渡されるので、JavaVMの指定は-vmargsより前に書く必要があります。
ロケールを英語にする
-Duser.language=en
これを記述*1する事で、ロケールが英語に切り替わります。
なんでわざわざ英語にしているのかというと、eclipse標準のHTMLエディタに、文字コード判別に関するバグがあるからです。
HTMLファイル内にMETAタグ+charset指定が無い場合、驚いたことにロケールがjaの時はこのEncodingGuesserが呼び出されて、JIS/Shift_JIS/EUC-JP/ASCIIの自動判別をやってくれます。すごいぞwst。でもJIS/Shift_JIS/EUC-JP/ASCIIしか判別していないので、それ以外の場合デフォルトのShift_JIS(これは埋め込みの固定)を返してしまいます。
http://blog.goo.ne.jp/atlanto/e/f9c32302055b47f3521df3ee0967992d
Smartyなどのテンプレートエンジンを使っていると、metaタグを含まない断片的なhtmlを編集する事が多々あります。
最近は大抵UTF-8を使うのに、このバグのせいでうっかりShift_JISで保存されて、文字化けです。
しょうがないのでロケールをja以外にし、このバグを無理やり回避しました。
ロケールがenの弊害
補完で入力される日付の表記が「Feb 13 2009」の様になって若干読みにくいです。
ユーザ名を指定する
-Duser.name=username <username@example.com>
DocBlockにはなるべく@authorを書いて、後から誰が作ったメソッドなのか分かる様にしています。
ただ、これを一々入力するのは面倒です。
@author username <username@example.com>
大抵はこの様に書くと思いますが、ちょっと設定してあげると、補完で入力できるようになります。
その際のusernameとメールアドレスの部分を設定できるのが-Duser.nameです。
eclipse.iniのまとめ
元のeclipse.ini
-startup plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m -vmargs -Xms40m -Xmx256m
変更後のeclipse.ini
-startup plugins\org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar --launcher.library plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m -vm C:\Program Files\Java\jre6\bin\javaw.exe -vmargs -Xms40m -Xmx256m -Duser.language=en username <username@example.com>
*1:確認してないけど、-vmargsの後に書いて動作してるから、これもJavaVMへの引数かな?