Mac OS X 下 Eclipse 安装 SVN 插件 subclipse 及JavaHL 方法

来源:互联网 发布:git windows 编辑:程序博客网 时间:2024/04/29 19:58

工作环境换了 Mac ,Java Web 项目开发当然用 Eclipse,团队 10 人以内,没有远程办公需求,前期也不需要快速的迭代,所以版本控制选用SVN。Eclipse 的安装,SVN 插件 subclipse 的安装都很简单,但 Mac 下想使用 SVN 的 Native library 是需要安装 JavaHL

由于使用 SVNkit 也可以,只是性能上没有使用 JavaHL 好,加上工作时间也比较饱和,就没有使用大段的时间去解决这个问题,断断续续快一个月了才解决这个问题,这里整体总结一下。

环境描述:

操作系统:mac os sierra 10.12

Eclipse Java EE IDE for Web Developers. Version: Neon.2 Release (4.6.2) 

svnserve --version   svnserve, version 1.9.5 (r1770682) 

svn --version   svn, version 1.9.5 (r1770682)  

Eclipse 安装 SVN 插件 subclipse

1、Help菜单》Install New Software


2、点击“Add”按钮添加 Repository 库地址

Location 中输入:http://subclipse.tigris.org/update_1.12.x

点击OK。


安装 SVN 插件 subclipse 1.12 时,可能遇到问题:No repository found containing: osgi.bundle,org.tigris.subversion.clientadapter.javahl,1.9.3

subclipse 安装完成后,当我们选择使用 的时候还是会提示:javaHL not available,


这时我们需要安装 javaHL。

JavaHL是什么?

JavaHL 是Subversion项目的一部分。具体地说,它是java语言结合 Subversion 的 API。提供了一个分层的API设计,作为本地库(DLL,Linux下表现为 .so)。Subversion 命令行只是对这个API的简单应用。API 提供了丰富的功能,同时保持向后兼容性。这就是为什么有这么多伟大的Subversion客户端和工具可用,因为有一个丰富且稳定的API提供了你所需要的所有功能。

Subversion 使用 C语言编写,提供优秀的跨平台支持,也因为C语言编写的库很容易被其他语言所调用。Subversion 项目提供并维护 Java, Perl, Python  和 Ruby 等语言与其交互的功能。后三者是通过SWIG(Simplified Wrapper and Interface Generator ,一个非常优秀的开源工具,支持您将 C/C++ 代码与任何主流脚本语言相集成)库和语言自身调用本地库语言接口的能力实现的。JavaHL 是“高级别”的API,提供自定义编写的C++代码作为java代码和本地库之间的JNI桥梁。这样的设计使我们能够提供一个很好的 java API 来调用 Subversion

JavaHL 实质上包括四个部分:

  1.  相对较薄的java代码层提供的API,使其可以通过 java 调用。
  2. 一个C++库(javahl 库或 libsvnjavahl-1)。java层到这个层的交互使用java本地接口(JNI)调用。C++层就是“高级别”的API的实现。例如,可以提供一个简单的java API:“提交这个文件列表,使用此提交消息”。C++层负责内存管理和执行所有底层 Subversion API调用需要完成的请求。
  3. Subversion 库本身。命令行客户端将安装和使用相同的库。另外,其他Subversion客户端,如TortoiseSVN或AnkhSvn也使用相同的库。
  4. Subversion 库的依赖项。Subversion 需要一些外部库来完成操作。最大的是 Apache Portable Runtime (APR)可移植运行时,但它也需要像Neon库的HTTP客户端和OpenSSL处理加密等。

应用程序要使用 JavaHL 这四层都是必需的。

获取正确的版本

WIKI 上是把这一节放在 JavaHL 是什么 之前的,因为知道你需要使用 Subclipse  的哪个版本是非常重要的。JavaHL  是 Subversion 的一部分,所以它的版本必须和你安装的Subversion 命令行客户端的版本匹配。每个Subclipse版本通常只支持一个单一的Subversion客户端版本(由于API的差异)。确保你获取与你的 Subclipse版本正确的 javahl 版本。

正确的版本对应关系见下图:

我开始就因为版本不对,遇到问题:Incompatible JavaHL library loaded. Subversion 1.8.x required.

安装JavaHL

要通过 port 来安装:

sudo port install subversion-javahlbindings +no_bdb +universal
如果你还没有安装 port ,可以通过以下地址下载安装:

https://www.macports.org/install.php

在使用 Port 安装时可能遇到问题:Error: Port subversion-javahlbindings not found
WIKI中也提供使用 Homebrew 安装的方法,但我使用以下方法安装成功了也不能用(或许这也和我选择的版本不对有关系):

安装 Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 JavaHL

brew install --universal --java subversion
创建库链接:

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

小结

这个问题花了很长时间才解决,但今天看到一篇调查:http://www.baeldung.com/java-in-2017
这个调查结果显示 IntelliJ IDEA 使用的人越来越多了,超过了 Eclipse;
去年还翻译过一些 IntelliJ IDEA 的文章,获得了一年的正版授权,或许我也应该转到 IntelliJ IDEA上。

======================文档信息===========================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.NET/testcs_dn)

==============欢迎关注我的个人微信订阅号(微wx笑)============

2 0