Linux下Subclipse的JavaHL

来源:互联网 发布:管家婆导入数据 编辑:程序博客网 时间:2024/06/14 07:50


    Subclipse是一个很优秀的SVN客户端。它提供了ClientAdapter、JavaHL和SVNKit等方式于SVN服务交互。官方强烈推荐使用JavaHL的方式。JavaHL使用JNI的调用SVN的本地库。速度快,稳定可靠。
     但是在Linux下,就比较麻烦了。默认安装好后, Subclipse的配置界面中,显示的javaHL的状态是“unavailable“。这是因为系统中没有安装svn的javahl。经过一段时间的折腾。终于搞定了它。期间走了不少弯路,今天把它记下来。希望能对大家有所帮助。
     当然,我们可以通过诸如Ubuntu的apt-get等方法来获取javahl。不过,我们的目标是:DIY。
     为了达到让Subclipse使用javaHL的目的。我们需要完成如下的工作:
    1。下载Subversion的源代码。
    2。编译Subversion的javaHL库,并安装
    3。相关配置

    下载Subversion源码

    Subversion目前的版本主要有:1.4.x、1.5.x、1.6.x。相应的,与此对应的Subclipse的版本为:1.4.x、1.5.x、.1.6.x。所以,在下载之前,需要确定我们使用的Subclipse的版本。查看Subclipse版本的方法有很多种。例如,可以通过菜单Help -> About Eclipse Platform窗口中的Subclipse按钮来查看。需要注意的是。如果版本不匹配,安装javahl后,Subclipse是无法识别的。
    偶比较追新。选择的是1.6。
    Subclipse 1.6的Update Site网址是:http://subclipse.tigris.org/update_1.6.x
    我们需要去官方网站下载Subversion 1.6的相关源码以及编译用的依赖包。大家可以在Subversion的首页找到源码的下载连接。网址是:http://subversion.tigris.org/。不过,只有源代码是不行的。还需要去它的Source Release Area中下载依赖包。网址是:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260&expandFolder=74。
    最终,我们得到的是subversion-1.6.x.tar.bz2和subversion-deps-1.6.x.tar.bz2。

    编译安装Subversion的javaHL库

    首先,创建一个临时的工作目录。例如,我在我的home目录下创建了一个临时的工作目录:
   
   leon@leon:~$mkdir work

    然后,将两个包复制到了那个目录。然后使用tar命令解压两个压缩包。最终,会在临时目录下得到一个名为subversion-1.6.x的目录。
    在编译前, 我们还需要准备一下的环境:

    1。Java, 需要一个jdk。我的安装/usr/local/jdk中。

    2。Openssl的开发库。如果用的Ubuntu, 可以使用sudo apt-get install libssl-dev。来安装Openssl-dev到你的系统中。奇怪的是,为什么他们给Openssl-dev起名叫做“libssl-dev“呢?

    3。JUnit 3.8.1的jar文件。我把它放在了我的work临时工作目录中。安装完成后,我们需要使用它来测试一下javahl是否安装正确了

    4。一个标准的gcc编译环境。如果用Ubuntu, 可以使用sudo apt-get install build-essential来安装

    准备好后,我们就可以编译了。首先配置源代码:

   ./configure --with-jdk=/usr/local/jdk --with-junit=/home/leon/work/junit-3.8.1.jar --enable-javahl

    这时候,我们可去作点儿别的。等它配置完后,可能会有一个警告,不用管它。接下来执行:

   make javahl

    再去作点儿别的事情吧。例如去听听音乐,或者玩游戏。等它编译后,我迫不及待了执行了安装的命令:

   make install-javahl

    完成后,先测试一下javahl是否工作正常:

   make check-javahl

    相关配置

    一般来说,应该不会有啥问题。接下来,启动安装好Subclipse的Eclipse(如果Eclipse一直没关,则需要重新启动)。打开菜单:Window -> Preferences窗口,然后展开左侧TreeView中的Team,选中下面的"SVN"。这时,在SVN 接口的地方,javahl仍然是"unavailable"!我当时就抓狂了……
    经过冷静分析,查找资料后才得知:这时由于Subclipse没有找到javahl的库所致。这种情况在一些Linux发行版上会发生,例如我现在用的Ubuntu 9.04。具体的原因就是刚才的make install-javahl将相关的库安装到了/usr/local/lib下。而java是不会在这个路径中搜索相关的库的。让java去搜索/usr/local/lib的方法有很多中,我采取的方式是修改eclipse.ini文件。它位于eclipse的目录中。在-vmargs一行下,加入了:

   -Djava.library.path=/usr/local/lib

    再重启Eclipse, 在Preferences窗口中。看到了正确javahl。哈哈!终于成功啦!

    希望我的经历能给大家带来一些帮助。如果有什么问题,请一定要以最快速的联系我。enjoy!
1 0