java - Windows 上用于 SVN Java 绑定(bind) (JavaHL) 的配对 JAR 和 native 库二进制文件?

标签 java windows svn javahl

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

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

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

手动解决方法(糟糕!)

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

所以我从标记的 SVN 版本中获得了 Java 包装源。 (您也可以从 main site's source downloads .)

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

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

附言我知道我可以使用 SVNKit 来避免必须这样做,但我这样做正是为了出于许可原因依赖 SVNKit(加上 JavaHL API 很好并且相当高级无论如何,还有其他原因更喜欢使用“官方” native JavaHL 实现)。

最佳答案

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

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

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

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

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

关于java - Windows 上用于 SVN Java 绑定(bind) (JavaHL) 的配对 JAR 和 native 库二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782416/

相关文章:

svn - 搜索颠覆历史(全文)

java - 带符号原始中的0是正数还是负数(或两者都是)?

windows - 通过 PsExec 在远程计算机中执行批处理文件

c - 将 SQL_BINARY 数组数据作为参数传递时如何避免零终止? (ODBC 驱动程序)

windows - 在没有图形 session 的情况下在虚拟机上自动化测试

svn - 如何开始使用 svn :externals?

java - 是否有带有 Java 监听器的 Map 实现?

java - 什么可能导致http ://localhost:9000 not to work testing Java Play in Windows?

java - 多行配置文件中的正则表达式,不等于

svn - 尝试将任何内容提交到迁移的 Visual SVN 服务器时出现 500 内部错误