用于Windows上的SVN Java绑定(JavaHL)的配对JAR和本机库二进制文件?

我正在写一些直接使用Subversion(SVN)Java绑定(JavaHL)的代码(其中JavaHL包含本地库和一个Java包装器)。 在Linux(Ubuntu 12.04)上,这是没有问题的: libsvn-java包安装了本地库和\usr\share\java\svn-javahl.jar ,所以我只需引用后者就可以了。

Windows上,我知道这两个对(JAR +本地库)没有这样干净的包装。 我意识到,SlikSVN包含一个JavaHL实现,但安装似乎只安装本地库 (它放在PATH上)。 有没有什么能给这两者打上一个干净的包装呢? (如果SlikSVN包装了JAR,那么我就没有想到的是,search整个驱动​​器一无所获…)

作为一种解决方法,我手动构build了JAR文件(下面的详细信息可能对人员有用)。 但是,Java封装器和本地库的“匹配”似乎非常精确:当我从后来的SVN源代码(而不是匹配我的确切SlikSVN SVN版本)构buildJAR作为testing时,我在本地代码(EXCEPTION_ACCESS_VIOLATION)。 也许我很不走运,但是如果它非常敏感的话,我需要为用户可能安装的每个潜在版本的SlikSVN(以及SVN)提供一个JAR库(或者限制他们的SlikSVNselect,错误自动生成过程,这将需要他们安装一个JDK)。 所有不良select:–(

手动解决方法(错误!)

我有SlikSVN 1.8.10: svn --version报告版本1.8.10-SlikSvn-1.8.10-X64

所以我从标记的SVN版本中获得了Java包装器源代码。 (您也可以从主站点的源代码下载中获得 。)

 svn export http://svn.apache.org/repos/asf/subversion/tags/1.8.10/subversion/bindings/javahl/src 

把这个(没有依赖关系)编译到一个JAR中,使用它,在SlikSVN本地库中工作得很好。

PS我知道我可以使用SVNKit来避免这样做,但是我正是这样做的,所以不要依赖SVNKit来获得许可(加上JavaHL API是好的,合理的高层,还有其他的理由更喜欢使用“官方”原生JavaHL实现)。

WANdisco二进制文件应该包含JavaHL。

http://www.wandisco.com/subversion/download

一段时间以来,我自己使用它们(通常不使用Windows)。 但是WANdisco有依赖于JavaHL的工具,所以我无法想象Windows的二进制文件缺少JavaHL。

[问题作者编辑完成详细]

您需要安装(Windows)Subversion客户端( 不是 SmartSVN),并确保选中该框以将其添加到Windows PATH 。 这会将“配对的”JAR存储在安装目录中(以及本机库)。 但是 ,WANDisco仅提供32位安装(请参阅此论坛帖子 ),所以这不适用于64位Windows。 另外,JAR只包含为Subversion 1.7添加的API的Apache版本。 如果您使用旧版org.tigris.subversion.javahl包API与1.7版SVN客户端兼容,则仍然需要手动构建JAR。