Eclipse on Mac with svn

自从换了mac,IDE也同时换成了idea,一直没有去用过eclipse。前两天心血来潮(zuo),想着怀旧一下,打开eclipse搞一搞。
结果悲剧发生了,mac下的eclipse用svn居然如此艰难,以至于花了好多时间才搞定它(其实我也用不着,只是有搞不出来不爽的强迫症。。。)。下面总结一下这个悲剧。

下载完eclipse解压打开,然后安装Subclipse。然后到eclipse设置里看下subversion,悲剧了,弹出提示:

1
2
3
4
5
6
7
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
no svnjavahl in java.library.path
java.library.path = /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/i386/client:/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/i386:/usr/lib/xulrunner-addons:/usr/lib/xulrunner-addons:/usr/java/packages/lib/i386:/lib:/usr/lib

按照常用套路,google之(悄悄告诉你,最好别用度娘),发现原来由于mac osx这个二货中自带的Subversion居然是个阉割货(不明白为什么要阉割掉),里面没有JavaHL相关的库,这个库的作用简单地说,就是提供接口给第三方比如subclipse这种来调用本地的svn用的,所以当subclipse发现没有这个库的时候,就没办法了。(这里其实还有个选择,就是安装subclipse的时候勾上SVNKit,这样的话它就会自带一个svn客户端,不需要通过JavaHL调用本地svn,不过不推荐这么搞,一个环境下,最好用同样的svn)

所以解决问题的关键是要给svn安装一个JavaHL库,google了好久,被坑了好多回,发现JavaHL这个库没法独立给svn补回去(或者是我没找到对的方法),于是只有换掉整个svn这个思路,先记得svn --version看看已经有的svn版本,免得换了以后发现版本不一样又发生悲剧(比如我)。

在mac上安装svn,首先需要安装brew,当然也可以用macport,反正一个意思。安装brew非常简单,一个ruby脚本就搞定了(mac是自带ruby环境的):

1
$ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

然后就可以使用brew命令了,类似于debain下面的apt-get。安装完整的svn,命令:

1
$brew install --universal --java subversion

如果你恰好用的是跟它一样的最新版本,那没关系,如果你用的是1.6或1.7的版本,那就需要对应的把subversion换成subversion16subversion17。安装过程中需要make,可能花费一点时间,这要看你的机器了。

完成后,你可以看到安装过程中要求你执行以下命令:

1
2
$sudo mkdir -p /Library/Java/Extensions 
$sudo ln -s /usr/local/lib/libsvnjavahl-1.dylib /Library/Java/Extensions/libsvnjavahl-1.dylib

不过执行第一个命令前记得先看下这个目录是不是已经存在,已经存在就不用mkdir了。执行第二个命令,把包链接过去就完事了。

最后重启eclipse,再去subversion那个选项看看,是不是已经找到JavaHL库了呢?