EclipseのSubclipseプラグイン導入にはまる

Macで使っていたEclipseSubclipseプラグインを導入しようとしたらハマったのでメモ。

環境は下記。

作業手順は下記の通り。

  • Help -> Install New Softwareで表示されるダイアログで下記のURLを指定する。
  • インストール完了後、Eclipseを再起動したところ、svnクライアントであるJavaHLが使えないというエラーメッセージが表示される。
  • MacPortssubversion-javahlbindingsが用意されていると分かったのでインストールを試みるがエラーが発生してしまう。
% sudo port install subversion-javahlbindings
Password:
--->  Computing dependencies for subversion-javahlbindings
--->  Fetching subversion-javahlbindings
Error: Target org.macports.fetch returned: 
********************
subversion-javahlbindings requires the Java for Mac OS X Developer Package from Apple.
Please download and install this package:
https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719
********************
Log for subversion-javahlbindings is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_subversion-javahlbindings/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>
Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
/opt/local/lib/libsvnjavahl-1.0.0.0.dylib:  no suitable image found.  Did find:  /opt/local/lib/libsvnjavahl-1.0.0.0.dylib: mach-o, but wrong architecture

Note the error about wrong architecture. This is because the 64-bit JVM cannot load a 32-bit native library.

subclipse: Wiki: JavaHL
  • 改めてファイルを確認したところ、JavaHLライブラリの方は64ビットであり、今まで使っていたEclipseは32ビット版だと気がついた。(Macの場合、通常はアプリケーションパッケージ内に32bit版と64bit版のバイナリが含まれているので、ユーザとしてあまり意識することは無いのだが、Eclipseは例外的に別パッケージとなっているのだった)
$ file /opt/local/lib/libsvnjavahl-1.0.0.0.dylib 
/opt/local/lib/libsvnjavahl-1.0.0.0.dylib: Mach-O 64-bit dynamically linked shared library x86_64

参考:



関連

*1:よく分からないのだけけど、これを導入しなくても良いMacOS X環境も有った。