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

Stu*_*ter 5 java svn windows javahl

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

在 Windows 上,我知道这对(JAR + 本机库)没有这样干净的包装在一起。我知道 SlikSVN 包含一个 JavaHL 实现,但安装它似乎只是安装本机库(它确实放在 PATH 上)。有什么东西可以让两者干净利落?(如果 SlikSVN确实打包了 JAR,它在我期望的地方,并且搜索整个驱动​​器什么也没找到......)

作为一种解决方法,我手动构建了 JAR 文件(下面的详细信息可能对人们有用)。但似乎 Java 包装器和本机库的“匹配”非常精确:当我从更高版本的 SVN 源代码(而不是匹配我的确切 SlikSVN SVN 版本的那个)构建一个 JAR 作为测试时,我在本机中遇到了致命错误代码(EXCEPTION_ACCESS_VIOLATION)。也许我不走运,但是,如果它非常敏感,我将需要为用户可能安装(或限制他们的 SlikSVN 选择,或有一些倾向-错误的自动构建过程需要他们安装 JDK)。所有不好的选择:-(

手动解决方法(糟糕!)

我有 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
Run Code Online (Sandbox Code Playgroud)

将此(没有依赖项)编译成 JAR,并使用它,与 SlikSVN 本机库一起工作得很好。

PS 我知道我可以使用 SVNKit 来避免这样做,但我这样做正是为了依赖 SVNKit 出于许可原因(加上 JavaHL API 很好,而且还是相当高级的,还有其他更喜欢使用“官方”本机 JavaHL 实现的原因)。

Ben*_*ser 1

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

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

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

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

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