5

我正在编写一些直接使用 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,那么它在我所期望的任何地方,并且搜索整个驱动​​器一无所获......)

作为一种解决方法,我手动构建了 JAR 文件(下面的详细信息可能对人们有用)。但似乎 Java 包装器和本机库的“匹配”非常精确:当我从后来的 SVN 源代码(而不是匹配我的确切 SlikSVN SVN 版本)构建一个 JAR 作为测试时,我在本机中遇到了致命错误代码(EXCEPTION_ACCESS_VIOLATION)。也许我很不走运,但如果它非常敏感,我需要为用户可能安装的每个潜在版本的 SlikSVN(以及因此 SVN)提供一个 JAR 库(或限制他们的 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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2014-11-07T04:32:42.373 回答