[Eclipse]インストール済みのJREが復活した

Written by uechoco 3月 28

Mac OS X 10.6(Snow Leopard)にしたり、Eclipse 3.5(Galileo)にしたり、していると、いつの間にかOSDE(OpenSocial Environment Development)が起動できなくなってた。どうやら、JREやJDKが見つからないと言って、起動してくれないらしい。ちなみにEclipseはPDTベースにPleiadesで日本語化を施したもの

関連エラー:

  • 選択された JRE は現在の準拠レベル 1.4 をサポートしていません
  • 指定された JRE インストールが存在しません
  • The specified JRE installation does not exist
  • 標準 VM は MacOS ではサポートされていません。
  • Standard VM not supported on MacOS

たしかに、設定メニューからインストール済みのJREを見てみると、何も無い。そして、追加仕様としても、追加できない。OSDEやMac のJavaやらいろいろ疑ってググったが、中々出てこない。英語のサイトを見ていたら、新規ソフトウェアのインストールでいくつかインストールしたら改善したって書き込みを見たので、Eclipse Java 開発ツール」とか「環境記述 JavaSE-1.6」とか、それっぽいものを同時にインストールしてみたところ、インストール済みのJREが復活しました。たぶん前者が影響しているかと思います。

参考:

[Mac][Eclipse]Pleiades入り本体のアップデートすると起動に失敗する時の対処法

Written by uechoco 11月 08

[mac]eclipseインストールとpleiadesで日本語化というMacのEclipseにPleiadesを導入する記事を書いてるくらいなので、現在使用中のEclipse 3.5にもPleiadesが適用されていますが、たまにトラブルが起きたりします。今回のトラブルは、何らかの、特にElipseコア系のソフトウェアアップデートをした後に、Eclipseが起動しなくなってしまうという現象です。案の定、Pleiadesがトラブルを起こしているのですが、私の場合の現象と解決策を残しておきます。

まず、Eclipseソフトウェアアップデートした後、再起動を促されますので再起動をします。そうすると、スプラッシュ画像の直後にダイアログが出て、「起動失敗したから、logファイルにエラー状況書き込んどいたよ」的な英語が書かれています。Pleiadesの説明書にも書いてありますが、Eclipseソフトウェアアップデートの直後は、必ず1回だけEclipseを-cleanオプションで起動させなければいけません。ターミナルなどで/Application/Eclipseに移動し、eclipse -cleanとコマンドを打つことでPleiadesがクリーン起動します。

通常なら、次回以降の起動はEclipse.appのダブルクリックで済むのですが、たまに前述の起動エラーが続くときがあります。その場合、クリーン起動なら正常起動できるのに、-cleanを付けない通常起動だとどうしても起動エラーになってしまいました。困っていたときに、Pleiadesのreadmeをくまなく読んでいると、強制終了が続く場合、-clean起動の後、configuration/jp.sourceforge.mergedoc.pleiades/ ディレクトリを削除すると直るかもしれないと書いてありました。試しにやってみたら、本当に直りました。

というわけで、Pleiadesでトラブルが起きたら、readmeをくまなく見て、解決策を探してみるのがいいでしょう。起動エラーが続く場合は今回の記事のような対応が書かれています。

[eclipse]YAML編集プラグインyedit(*.yml/*.yaml)

Written by uechoco 10月 25

symfony開発のために、EclipseにYAMLファイルの編集プラグインが入ってなかったので入れてみました。

候補としては、[eclipse]YAMLエディター – hello,worldに紹介されているyamleditoryeditです。

yamleditorは1年以上更新されていないのですが、yeditは現在進行形で開発されているようなので、yeditにしました。Eclipse 3.4と3.5に対応しているようです。インストール後に設定画面でエディターのファイルの関連付けを確認してみると、*.ymlと*.yamlの両方が関連づけられていました。YAMLハイライト見やすいな。

基本的に問題ないのですが、たまに変なところでSyntax Errorはいたりするのはなんでだろう。まーそのうち改善されるかな?

[Mac]netatalkの.AppleDoubleでsymfonyコマンドがつまずく時がある

Written by uechoco 9月 13

タイトルでもわかるとおり、非常に限定的な環境でsymfonyを使ったときにハマってしまったので、今後、私と同じようなマニアックな環境でハマってしまった人がググってくれることを期待して備忘録を残します。

さて、私はMac OS X上にVMware Fusion 2を導入していて、会社での開発をVM上のCentOS 5で行っています。開発ではMacのCocoaに対応したEclipse 3.5を主にしようしています。EclipseでVM上のファイルを直接読み書きするため、netatalkというMac版sambaとも言えるソフトウェアをCentOSに導入して、MacとLinux間の共有を行っています。ここら辺のお話は、以前3回に渡って書いたnetatalk導入のブログの記事を参照してもらえればと思います。

Mac OS Xでで外部ストレージ(NFS)などを用いるとき、ファイルのメタ情報を保存するために、netatalkでは.AppleDoubleというフォルダを各フォルダごとに生成し、そのフォルダの中に元ファイル名と同名のファイル名でメタ情報を格納します。※WikipediaのAppleSingleにAppleDoubleについて記載があります。netatalkではnoadoubleというオプションがあり、「必要なければ.AppleDoubleを作らない」という設定にすることができるのですが、必要ある場合は当然作成されてしまいます。例えば、Eclipseからアクセスして保存とかをすると、.AppleDoubleが作られてしまうような気がします。

CentOS上にsymfonyを展開してMacからターミナルで操ろうとしたとき、基本的にはsymfonyのあの深いフォルダ階層のすべてに.AppleDoubleが生成されてしまうということです。そこでこまったのがsymfonyコマンド。propel:build-xxxとかやろうとすると、どうも.AppleDoubleのせいでうまくいかないことがあります。

例えばpropel:build-model

Bash:
  1. [ueno@localhost project]$ ./symfony propel:build-model
  2.   Unable to parse file "/path/to/project/config/.AppleDouble/schema.yml": Unable to parse line 1 (

なぜか.AppleDoubleフォルダ内のshema.ymlがパースできないと言われてしまいます。前述の通り、.AppleDoubleフォルダの中に元ファイル名と同名のメタファイルを生成しますので、もしかしたらschema.ymlという名前に反応してしまったのかもしれません。一応propel:build-modelのヘルプを見てみましょう。

Bash:
  1. [ueno@localhost project]$ ./symfony help propel:build-model
  2. Usage:
  3.  symfony propel:build-model [--phing-arg="..."]
  4.  
  5. Aliases: propel-build-model
  6.  
  7. Options:
  8.  --phing-arg  Arbitrary phing argument (multiple values allowed)
  9.  
  10. Description:
  11.  The propel:build-model task creates model classes from the schema:
  12.  
  13.    ./symfony propel:build-model
  14.  
  15.  The task read the schema information in config/*schema.xml and/or
  16.  config/*schema.yml from the project and all installed plugins.
  17.  
  18.  You mix and match YML and XML schema files. The task will convert
  19.  YML ones to XML before calling the Propel task.
  20.  
  21.  The model classes files are created in lib/model.
  22.  
  23.  This task never overrides custom classes in lib/model.
  24.  It only replaces files in lib/model/om and lib/model/map.

検索条件はconfig/*schema.ymlと書いてありますので、フォルダも引っかかってしまうようです。

で解決策はどうするのか?propel:build-xxx系のコマンドなどでは、symfonyライブラリの中に含まれるsfFinder.class.phpというユーティリティを利用しています。この中に、指定されたルールに基づいて、ファイルやディレクトリを検索するというin()メソッドがあるのですが、この中で、バージョン管理ソフトのディレクトリを無視するようなプログラムの掛かれば部分があります。symfony 1.2.8のlib/symfony/util/sfFinder.class.phpの341行目付近です。

php:
  1. /**
  2.    * Searches files and directories which match defined rules.
  3.    *
  4.    * @return array list of files and directories
  5.    */
  6.   public function in()
  7.   {
  8.     $files    = array();
  9.     $here_dir = getcwd();
  10.  
  11.     $finder = clone $this;
  12.  
  13.     if ($this->ignore_version_control)
  14.     {
  15.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg');
  16.  
  17.       $finder->discard($ignores)->prune($ignores);
  18.     }

svnやらcvsやらgitやらのメタ情報を保存するフォルダの除外指定が列挙されています。ならばここにAppleDoubleをいれればいいんでないか?ということで、修正多野がこちら

php:
  1. if ($this->ignore_version_control)
  2.     {
  3.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.AppleDouble');
  4.  
  5.       $finder->discard($ignores)->prune($ignores);
  6.     }

symfonyのコアを書き換えるのはどうかと思ったのですが、この設定を付け加えるだけでnetatalk環境でのsymfonyコマンドが問題なく使えるようになったので開発が進みそうです。

まぁ、こんな環境でsymfony使う人はなかなか居ないと思いますが。。。

[mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(3/3)

Written by uechoco 8月 17

前回はCentOSにnetatalkをインストールしたので、今回はnetatalkの設定と、Mac上のEclipseからCentOSにアクセスするときにハマったところを説明します。

と、その前に、netatalkをインストールすることになった経緯のおさらい。

現在Windows XPのEclipseは、VMware Sever上のCentOS 5上にワークスペースを作ってそこで開発をしていて、WindowsとCentOS間のファイル共有にはsambaを用いていました。今度開発環境をMacに移すにあたり、Mac OS XのEclipseから、VMware Fusion上のCentOS上のワークスペースにアクセスする訳ですが、Mac OS XとCentOS間のファイル共有にはsambaではイマイチなので、netatalkを用いることにしました。イメージとしては下図のような感じです。
netatalk7_netatalk_vs_samba

[mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(1/3)

私自身はあまり詳しく調べていないので、私の環境では問題なく動いたときの設定を紹介いたします。

まずは、文字コード周りの設定から。netatalk.confを編集します。

Bash:
  1. sudo vim /etc/atalk/netatalk.conf

TEXT:
  1. #ATALK_MAC_CHARSET='MAC_ROMAN'
  2. というMAC側キャラセットを以下に変更。
  3.     ATALK_MAC_CHARSET='MAC_JAPANESE'
  4. 同様に、
  5.     #ATALK_UNIX_CHARSET='LOCALE'
  6. というUNIX側キャラセットを以下に変更。
  7.     ATALK_UNIX_CHARSET='UTF8'

ゲストユーザの設定は必要かどうかはわかりませんが、適当なユーザ名に変えておきました。

TEXT:
  1. #AFPD_GUEST=nobody
  2.     AFPD_GUEST=hogeuser

ついでに自動起動も設定しておきます。

Bash:
  1. sudo /sbin/chkconfig atalk on

そして、これが結構ハマりどころだった設定を先に有効化しておきます。

Bash:
  1. sudo vim /etc/atalk/AppleVolimes.default

長いコメントの後、最終行に1文字だけ「~(チルダ)」があります。これはnetatalkで読み込むディレクトリを指しています。チルダはもちろんホームフォルダのことです。読み込むディレクトリを増やすには、チルダ以下に改行で列挙していきます。この設定ファイルはディレクトリの指定だけではなく、読み込み方法のオプションや先ほど設定したキャラセットなども設定できます。どういう設定があるかはManpage of AppleVolumes.defaultを参照してください。このなかで、一番大事な設定はoptions:usedotsです。これは、ドットファイル(先頭がドットから始まるファイルやディレクトリ)に対して、:hex変換を用いてファイル名を変えてしまうことを抑制するオプションです。デフォルトでは「.DS_Store」が「:2eDS_Store」として保存されてしまいます。Mac側から見ると、netatalkによって「.DS_Store」に見えるそうです。どうして厄介なのかは毎日モザイク » 2007 » 5月などをご覧ください。どちらかというと、Eclipseのときに厄介でした。ともかく、usedots設定をします。

TEXT:
  1. ~
  2. 上記、チルダの1行を
  3.     ~ options:usedots
  4. と変更する。他にもディレクトリの指定を追加した場合も同様にusedotsを指定する。

一応、usedotsを使わなかったときのCentOS上のディレクトリをお見せすると、こうなっています。(仕事上のディレクトリですので、モザイクばっかですいません。)
「.AppleDouble」はnetatalkが使っているメタ情報のフォルダです。Macのメタ情報フォルダ「.DS_Store」があるかと思いますが、同時に「:2eDS_Store」もあります。またEclipseのメタ情報フォルダ「.metadata」がありますが、同時に「:2emetadata」が作られています。Eclipseで既存ワークスペースを読み込もうとすると、「.metadata」は認識されず、新規に「:2emetadata」が作成されてしまうので、新規ワークスペース扱いされてしまいます。usedotsオプションを用いれば、「.DS_Store」や「.metadata」が認識されて、Eclipseでも既存のワークスペースが開けます。
netatalk6_not_usedots1

さて、いよいよnetatalk経由でCentOSにアクセスしてみます。netatalkのプロトコルはAFPですので、Finderの[移動]-[サーバへ接続...]で以下のように「afp://VMゲストのIP/」を指定します。
netatalk1
ユーザの認証が通れば、Finderに読み込まれます。
netatalk2_atalk
netatalk3_atalk
どうやら、うまく読み込めたようです。

いよいよEclipseを起動します。CentOS上の既存のワークスペースを指定して、読み込もうとしたら、「ワークスペースが使用中であるか作成できません。別のワークスペースを選択して下さい」といったロックファイル関連のエラーが発生しました。日記(仮) >> 2007/4/7を見るとネットワーク上のファイル共有ディレクトリにワークスペースを置くと、ロックファイルが正しく動かないようです。これを解決する方法はいくつかあるようですが、私の場合は、ワークスペースをロックしない設定にすること。MacのEclipseの設定ファイルは、Eclipseディレクトリのconfiguration/config.iniにありますので、以下のテキストを末尾に追加します。

TEXT:
  1. osgi.locking=none

これで無事にEclipseが起動し、既存のワークスペースがそのまま使えるようになりました。netatalkすげー。

netatalk7_netatalk_vs_samba

これでMacの開発環境も揃いそうです。長かった。
>> [mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(1/3)

>> [mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(2/3)